waitpid()做什么?

时间:2010-09-08 05:28:32

标签: linux unix posix

waitpid()有什么用?

2 个答案:

答案 0 :(得分:9)

它通常用于等待特定进程完成(或者如果您使用特殊标志,则以其他方式更改状态),基于其进程ID(也称为pid)。

它还可以用于等待一组子进程中的任何一个,来自特定进程组或当前进程的任何子进程。

有关血腥的详细信息,请参阅here

答案 1 :(得分:6)

它会阻止调用过程,直到指定的子进程退出(或进行其他转换,例如被停止。)

通常,如果您有多个流程并且只关心一个流程,那么您将使用waitpid而不是通用wait

典型用途是

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