根据我的阅读,wait
/ waitpid
的默认行为是等待进程中的状态更改。我找不到的是使用相同waitpid
参数的两个进程pid_t
的预期行为。
两者都返回并继续执行,还是只有一个注意到状态变化的竞争条件?
答案 0 :(得分:4)
只有父级可以等待()进程,而进程当然只能有一个父进程。
但是,父进程可能有多个线程。在多个线程等待同一个子节点的情况下,POSIX指定只有其中一个线程将看到状态更改。要允许多个线程查看状态更改,必须使用带有WNOWAIT标志的waitid()。