Existe-t-il une fonctionnalité intégrée à Bash pour attendre la fin d'un processus ?
El wait
ne permet que d'attendre la fin des processus enfants. J'aimerais savoir s'il existe un moyen d'attendre qu'un processus se termine avant de poursuivre dans un script.
Une façon mécanique de le faire est la suivante mais j'aimerais savoir s'il existe une fonctionnalité intégrée dans Bash.
while ps -p `cat $PID_FILE` > /dev/null; do sleep 1; done
4 votes
Laissez-moi vous donner deux avertissements : 1. Comme a souligné ci-dessous por mp3foley La commande "kill -0" ne fonctionne pas toujours sous POSIX. 2. Vous voulez probablement aussi vous assurer que le processus n'est pas un zombie, qui est virtuellement un processus terminé. Voir Commentaire de mp3foley y mine pour les détails.
2 votes
Une autre mise en garde ( a souligné à l'origine por ks1322 ci-dessous) : Utiliser un PID autre qu'un processus enfant n'est pas robuste. Si vous voulez un moyen sûr, utilisez par exemple IPC.