A quoi sert waitpid()
?
Il est généralement utilisé pour attendre qu’un processus spécifique se termine (ou change d’état si vous utilisez des indicateurs spéciaux), en fonction de son identifiant de processus (également appelé pid
).
Il peut également être utilisé pour attendre un groupe de processus enfants, que ce soit un groupe de processus spécifique ou un enfant du processus en cours.
Voir ici pour les détails gores.
Il bloque le processus d’appel jusqu’à ce qu’un processus enfant désigné se termine (ou effectue une autre transition telle que son arrêt).
En règle générale, vous utiliserez waitpid
plutôt que générique lorsque vous avez plusieurs processus et que vous ne vous en souciez que d’un seul.
Une utilisation typique est
pid_t child_pid; int status; child_pid = fork(); if (child_pid == 0) { // in child; do stuff including perhaps exec } else if (child_pid == -1) { // failed to fork } else { if (waitpid(child_pid, &status, 0) == child_pid) { // child exited or interrupted; now you can do something with status } else { // error etc } }