出于某种原因,我必须在同一个子进程上调用waitpid
两次:
第一次调用waitpid
并且没有错误:
waitpid(pid, &status, WUNTRACED);
第二次:
waitpid(pid, &status, WNOHANG|WUNTRACED);
发生错误:“没有子进程”。我的代码有什么问题吗?
更新
如果子进程在我第一次调用waitpid
之后或之前已经退出,这意味着父进程已经收到了这个子进程,则第二次调用waitpid
会导致错误。这是对的吗?
答案 0 :(得分:4)
可能是孩子在第二次waitpid()
电话之前终止了吗? AFFAIR,waitpid()
等待子进程终止(或其他状态改变)。