waitpid()
有什么用?
答案 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
}
}