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)
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)
Quelle plate-forme ?
Sous unixoïde : fork() + exec().
Sous Windows : CreateProcess() ou ShellExecuteEx() (beaucoup plus propre à mon sens que fork()+exec()).
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 ....)
Utiliser la fonction
Et ensuite cela dépend de l'OS.system
Ti-R -->- Sans que le programme qui le lance devienne dormant (donc pas system)
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)
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 unEnvoyé par hiko-seijuro
[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]
Start est supporté, mais il prend parfois un temp fou ...
à ton avis, CreateProcess et ShellExecute font quoi?Sous Windows : CreateProcess() ou ShellExecuteEx() (beaucoup plus propre à mon sens que fork()+exec()).
donc plus propre on en reparle
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é)
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
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.Envoyé par Médinoc
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager