linux系统下,假如我有子进程pid1和pid2,然后我要用waitpid阻塞父进程等待两个子进程完成,我该怎么写waitpid
时间: 2024-05-26 12:08:54 浏览: 58
Linux进程控制编程-waitpid函数实例.pdf
在Linux系统下,可以使用waitpid函数来阻塞父进程,等待指定的子进程结束。waitpid函数的原型如下:
```c++
pid_t waitpid(pid_t pid, int *status, int options);
```
其中,参数pid指定了要等待的子进程ID,如果pid的值为-1,则表示等待任意一个子进程。参数status是一个整型指针,用于存储子进程退出状态。参数options是一组选项,用于控制waitpid的行为。
如果你需要等待两个子进程pid1和pid2完成,可以按照如下方式调用waitpid函数:
```c++
int status;
pid_t pid;
while(1) {
pid = waitpid(pid1, &status, 0);
if (pid == pid1) {
// pid1已经退出
} else if (pid == pid2) {
// pid2已经退出
} else if (pid == -1) {
// 所有子进程都已经退出
break;
}
}
```
在上面的代码中,我们使用了一个while循环来不断地调用waitpid函数,直到所有子进程都已经退出为止。每次调用waitpid函数时,我们传递了要等待的子进程ID和一个选项0(表示不使用任何选项),并通过判断waitpid函数的返回值来确定哪个子进程已经退出。
阅读全文