据我所知,wait
/waitpid
的默认行为是等待进程中的状态更改。我找不到的是使用相同 pid_t
参数的两个进程 waitpid
的预期行为。
是否都返回并继续执行,或者这是一种竞争条件,只有一个人注意到状态变化?
最佳答案
只有父进程可以 wait() 进程,并且进程当然只能有一个父进程。
但是,父进程可能有多个线程。在多个线程等待同一个子线程的情况下,POSIX 指定只有其中一个线程会看到状态更改。要允许多个线程看到状态更改,您必须使用带有 WNOWAIT 标志的 waitid()。
关于c - 当两个进程等待同一个子进程时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801886/