Comment puis-je obliger un programme C ++ à démarrer un autre programme / processus (plus précisément C ++) sans attendre sa fin? (donc system()
ne fonctionnera pas ici car il lance l’autre programme / processus en tant qu’enfant, non?)
Je pensais commencer le deuxième programme / processus sur un autre fil ou quelque chose mais je ne suis pas sûr que cela fonctionnerait.
Merci pour l’aide.
Edit: exécuter Linux, désolé pour cette précision manquante … (Ubuntu 11.10 pour être précis)
Créez un fork avec fork()
(ou clone()
si vous voulez des threads plutôt que des travaux), puis exécutez le programme en utilisant execve()
ou system()
dans un processus et continuez à exécuter le programme original dans l’autre.
Vous pouvez utiliser le nohup
avec system (). Ainsi, votre programme c ++ appelé fonctionnera en arrière-plan, mais votre autre programme c ++ recevra le signal de sortie de nohup et finira l’appel système. Par exemple:
system("nohup gedit &")
En supposant que vous le fassiez sous Unix / Linux, vous pouvez utiliser fork
et un dérivé de exec
, où fork
créera un nouveau processus en dupliquant le processus actuel. Vous pouvez également utiliser wait
ou waitpid
pour attendre l’enfant et récupérer son statut de sortie.
EDIT: bon sang, les gens postent toujours plus vite que moi. xD
Si c’est pour Windows, CreateProcess () est le moyen de le faire. Citation: Note that the function returns before the process has finished initialization.