waitpid()做什么?

Nid*_*dhi 7 unix linux posix

有什么用waitpid()

pax*_*blo 9

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

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

请看这里的血腥细节.


poo*_*lie 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
     }
 }
Run Code Online (Sandbox Code Playgroud)