IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Lancer un executable comme le menu window


Sujet :

C

  1. #1
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 707
    Points : 1 448
    Points
    1 448
    Billets dans le blog
    7
    Par défaut Lancer un executable comme le menu window
    Celle est la façon de lancer un executable, à partir d'une appli. (comme dans le fait le menu window)

    - Sans que le programme qui le lance soit détruit. (donc pas: exec)
    - Sans que le programme qui le lance devienne dormant (donc pas system)

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Quelle plate-forme ?

    Sous unixoïde : fork() + exec().
    Sous Windows : CreateProcess() ou ShellExecuteEx() (beaucoup plus propre à mon sens que fork()+exec()).

  3. #3
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 707
    Points : 1 448
    Points
    1 448
    Billets dans le blog
    7
    Par défaut
    Merci! C'est ce que je que je cherchais !

    La solution Window est peut-être plus propre, mais moins portable. En fait, je cherchais la solution pour un autre langage, car les fabricants de libraire conservent habituellement les mêmes noms pour je genre de fonction.

    Malheureusement, ces deux fonctions ne semblent pas existé pour l'instant dans la librairie Ruby. Comme toujours, faire des solutions qui sont portable, cela reste un défi....

    À partir d'un script shell, quel serait la façon de faire ? ( Je me doute que je ne suis plus dans le bon forum, mais je prend une chance ....)

  4. #4
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Utiliser la fonction

    system
    Et ensuite cela dépend de l'OS.

  5. #5
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    Ti-R -->
    - Sans que le programme qui le lance devienne dormant (donc pas system)

  6. #6
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Il peut lancer un exe via system sans bloquer son programme

    " &" sous linux en fin de ligne si je me souviens bien...
    "explorer \"nom_du_fichier.exe\"" // sous Windows (il y en a d'autre méthodes en principe je crois, notamment sous XP)

  7. #7
    Membre expert
    Avatar de hiko-seijuro
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 011
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 011
    Points : 3 065
    Points
    3 065
    Par défaut
    ouaip c'est ca le "&" par contre pour le windows je ne connaissais pas merci pour le tuyaux

  8. #8
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Citation Envoyé par hiko-seijuro
    ouaip c'est ca le "&" par contre pour le windows je ne connaissais pas merci pour le tuyaux
    De rien, on est la pour cela, et la prochaine fois c'est toi qui m'en fileras un

    [EDIT]
    Il y a aussi
    "start nom_cmd \"nom_du_fichier.exe\"" // sous Windows XP (je ne sais pas si sous 98 et 2k c'est supporté)
    [/EDIT]

  9. #9
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 707
    Points : 1 448
    Points
    1 448
    Billets dans le blog
    7
    Par défaut
    Start est supporté, mais il prend parfois un temp fou ...

  10. #10
    Membre éclairé Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Points : 770
    Points
    770
    Par défaut
    Sous Windows : CreateProcess() ou ShellExecuteEx() (beaucoup plus propre à mon sens que fork()+exec()).
    à ton avis, CreateProcess et ShellExecute font quoi?
    donc plus propre on en reparle

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Ben, ils créent un nouveau processus vide, y chargent le code et le lancent...

    Au contraîre de fork()+exec() qui doitvent d'abord dupliquer le processus existant puis brutalement tout écraser avec le nouveau...
    (Sans compter des difficultés de feedback sur lesquelles j'ai déjà discuté)

  12. #12
    Membre éclairé Avatar de Tuxico
    Profil pro
    Étudiant
    Inscrit en
    Août 2003
    Messages
    662
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2003
    Messages : 662
    Points : 770
    Points
    770
    Par défaut
    oui mais au niveau de l'arborescence (init qui peut récupérer certains processus fils dont la père a planté etc) sous *nix, c'est beaucoup plus propre . Maintenant ce n'est pas le sujet ici et mes compétences doivent être bien en-dessous des tiennes, je tenais jsute à préciser que le système de gestion de processus sous linux est mieux structuré . Je ne voulais pas dirctement faire référence aux fonctions systèmes sur les deux OS, mea culpa

  13. #13
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par Médinoc
    Ben, ils créent un nouveau processus vide, y chargent le code et le lancent...

    Au contraîre de fork()+exec() qui doitvent d'abord dupliquer le processus existant puis brutalement tout écraser avec le nouveau...
    L'interet de faire comme cela est que tu peux ainsi personnaliser le contexte dans lequel le nouveau processus va tourner (entre le fork et le exec). Sous Windows, cela requiert l'utilisation des (trop) nombreux arguments des fonctions dediees. De toute facon, la creation d'un processus sous Windows est chere. Il est preferable d'utiliser les threads. Sous Unix/Lunix, ou la creation d'un processus est peu chere, un fork ne coute presque rien.

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Mais à mon avis, un exec() coûte presque autant qu'un CreateProcess(), et fork()+exec() est peut-être même plus couteux...

    Et (mais c'est pinailler) je ne vois pas de création de processus sous unixoïde: À part le tout premier processus, le noyau ne sait rien créer, il ne fait que copier.

Discussions similaires

  1. Lancer un executable selon l'etat d'un menu
    Par Endoril dans le forum Tkinter
    Réponses: 4
    Dernier message: 24/02/2009, 01h07
  2. Lancer un executable a partir d'un windows service
    Par barbar dans le forum VB.NET
    Réponses: 1
    Dernier message: 21/06/2007, 12h42
  3. Réponses: 1
    Dernier message: 04/08/2006, 13h31
  4. Context menu Windows - icone pour un item
    Par Cameleon45 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 07/03/2003, 14h48
  5. Raccourcis menu Windows 200
    Par pp dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/09/2002, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo