2010-09-08 12 views

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 
    } 
}