Bonjour,
Comment exécuter un exe de façon asynchrone depuis le programme C sans attendre un code retour ?
D'avance merci.
Bonjour,
Comment exécuter un exe de façon asynchrone depuis le programme C sans attendre un code retour ?
D'avance merci.
Il n'y a rien en C standard, il faut que tu précises ton OS. Il y a des exemples de code dans la FAQ, ici.
Système Unix.
L'exercice est de réaliser un module résident qui lance d'autres exe.
Cherche avec How to daemonize.
L'idée générale consiste à à forker, puis à s'émanciper de son processus père et pgid, et de se rattacher au processus init. Attention, toutefois : ça, c'est pour créer des daemons, qui sont par définition des processus autonomes et qui ne mourront pas avec le père (très utile pour rendre la main).
Merci
(dis-donc, je n'imaginais pas que ce serait si complexe pour faire quelque chose d'aussi simple)
Et lorsque le processus parent s'achève, qu'advient-il du fils ?
Enfin, un usgae long et prolongé de telles commandes sur divers systèmes unixoides dans les 20 dernières années ne m'ont pas permis d'atteindre certaines des limites que tu cites..
D'autre part, si on revient à la quetion initiale :
Il me semble que plutôt qu'une usine à gaz c'est quand même ce qui serait recommandé...
Donc, le truc est d'ajouter un et commercial après la commande dans l'instruction system() ?
le &, en shell unix, te met la commande correspondante en background..
(équivalent à la commande "bg")
Dans un appel à system(), cela signifie que tu n'attends pas la fin, et que donc tu as le retour de system() dès que la commande est lancée.
Si donc tu dois lancer une appli et ne pas attendre le retour, c'est ce qu'il faut faire, surtout si ton programe d'origine continue à tourner.
Si le shell duquel tu as lancé ton programme initial disparaît, là il te faut choisir des stratégies plus élaborées, puisque le context disparaît.
Si l'appli d'origine se termine, je crois (mais c'est à vérifier, je ne me souviens plus) que le processus lancé par & marche toujours. Cependant je ne me souviens plus si il est considéré comme zombie.
Sans en savoir plus sur ton appli, je suppose que c'et une appli tournant en continu, et dont tu voudrais lancer une appli détachée (du style une fenêtre qui lance un ftp ou une impression). Dans ce cas le & est tout à fait approprié.
http://en.wikipedia.org/wiki/Compari...command_shells
Merci,
l'appli génère des etats. En fait, elle remplit une table temporaire, puis demande l'exécution de l'état (le fameux exe) dans une boucle. Il est impératif que les programmes d'édition lancés en asynchrone continuent leur exécution même si l'appli qui les a lancé se termine.
Partager