< p >
waitpid()
有什么用途?
这通常用于等待特定进程完成(或者如果使用特殊标志的话,等待其它状态的改变),基于其进程 ID(也称为pid
)。
它还可用于等待一组子进程中的任何一个,可以是来自特定进程组中的一个或当前进程的任何子进程。
详见此处了解更多信息。
当一个指定的子进程退出(或发生其他转换,如停止)时,它会阻塞调用进程。
通常情况下,当你有多个进程且只关心其中一个进程时,你会使用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
}
}