Je souhaite séquentiellement exécuter des scripts c qui fourchent leurs propres processus (dans une nouvelle fenêtre de ligne de commande) et donner le "Press any key to continue..."
lorsqu'ils sont terminés. Techniquement, c'est un compilateur spécial. Il apparaît avec une fenêtre de ligne de commande et me dit si la compilation a réussi ou non. Mais que les fourches de la fenêtre de ligne de commande de nouveaux processus de compilation, qui font ce retour 0 avant qu'il ne devrait ..Utilisation du sous-processus pour savoir quand un processus se termine
Ma première tentative de c'était
process = subprocess.Popen(cmd)
process.wait()
en itérer sur chaque fichier. Malheureusement, cela n'attend pas le "Appuyez sur n'importe quelle touche pour continuer ..." et explose dans mon visage. Il semble que l'appel wait()
est passé lorsqu'un processus interne est terminé (auquel je n'ai pas accès). Comment puis-je, à la place, attendre "Appuyez sur n'importe quelle touche pour continuer ..."? Il est également l'impression d'autres informations avant que la presse une touche pour continuer la ligne ..
Actuellement, voici ce que mon code est:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
completed = False
while not completed:
if process.poll() is not None:
completed = True
print "communicating"
process.communicate("k")
print "communicated"
Le nouveau code n'a pas de sens: vous êtes occupé à attendre la fin du processus (wait() ferait la même chose, seulement sans surchauffer votre CPU) et ensuite essayer de communiquer avec un processus mort! Si le script que vous lancez forke un nouveau processus en arrière-plan et revient immédiatement, il n'y a pas grand-chose à faire. Vous devriez obtenir le pid du petit-fils et ensuite faire un os.wait() dessus. –