A cosa serve waitpid()
?Cosa fa waitpid()?
5
A
risposta
8
Viene generalmente utilizzato per attendere il completamento di un processo specifico (o in caso contrario lo stato cambia se si utilizzano flag speciali), in base all'ID processo (altrimenti noto come pid
).
Può anche essere utilizzato per attendere qualsiasi gruppo di processi figlio, uno di uno specifico gruppo di processi o qualsiasi figlio del processo corrente.
Vedere here per i dettagli sanguinosi.
5
Esso blocca il processo chiamante fino a quando esce un processo figlio nominato (o fa qualche altra transizione come essere fermati.)
In genere si utilizzerà waitpid
piuttosto che generici wait
quando si può avere più di un processo e solo cura di uno.
Un utilizzo tipico è
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
}
}