我有一个关于 waitpid 参数的问题。当 p[0] 完成时,我应该启动 p[1](进程 1)。
这就是 p0 的开头:
if(p[0] == 0){
process(0,1); //(process, duration(time))
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在我希望 p1 在 p0 结束时立即开始(1 秒后)
if(p[1] == 0){
process(1,2);
return 0;
}
waitpid(p[0], NULL, 0);
Run Code Online (Sandbox Code Playgroud)
这是我的问题:waitpid 中的参数是什么意思?应该将最后一个参数设置为 1,因为 p[0] 在 1 秒后结束,这是我希望 p[1] 开始的时间吗?
它通常用于根据进程 ID(也称为 a )等待特定进程完成(或者如果您使用特殊标志则更改状态)pid
。
它还可用于等待一组子进程中的任何一个,无论是来自特定进程组的子进程还是当前进程的任何子进程。
例如
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)
不涉及参数inwaitpid
如下
第一个参数:pid_t pid
这是您等待进程退出的进程的 pid
第二个参数:int *status
它是程序的当前状态,您可以使用宏来测试每个条件,例如 WIFEXITED 、 WIFSIGNALED
第三个参数:int 选项
options 参数应该为 0。您不需要实现任何选项。(但是,您的系统应该检查以确保不会请求您不支持的选项。)
归档时间: |
|
查看次数: |
14870 次 |
最近记录: |