Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ waitpid()在多个线程中的行为?_C++_Linux_Multithreading_Waitpid - Fatal编程技术网

C++ waitpid()在多个线程中的行为?

C++ waitpid()在多个线程中的行为?,c++,linux,multithreading,waitpid,C++,Linux,Multithreading,Waitpid,C++在Linux(CentOS 6.3)下,使用pthreads。gcc 4.7 我现在正在维护一个程序,其中主线程对waitpid(-1,…)执行阻塞调用,以获取任何和所有可能的子线程 在先前从主线程派生的线程中,我有代码在fork(系统()的道德等价物)之后使用waitpid(childpid,…)执行fork()/execve()调用 我看到很少有子线程的waitpid调用永远阻塞的情况 如果这两个waitpid调用都被阻止并且孩子退出,那么我假设存在竞争条件,对吗?为了避免一些评论:没

C++在Linux(CentOS 6.3)下,使用pthreads。gcc 4.7

我现在正在维护一个程序,其中主线程对waitpid(-1,…)执行阻塞调用,以获取任何和所有可能的子线程

在先前从主线程派生的线程中,我有代码在fork(系统()的道德等价物)之后使用waitpid(childpid,…)执行fork()/execve()调用

我看到很少有子线程的waitpid调用永远阻塞的情况


如果这两个waitpid调用都被阻止并且孩子退出,那么我假设存在竞争条件,对吗?

为了避免一些评论:没有人以这种方式设计这个应用程序。fork/exec/waitpid调用是后来由似乎不知道主线程的waitpid调用的人添加的。您不能等待孙辈。@n.m.-没有人试图等待孙辈。这可能是竞争条件。在某个时间点,子进程必须从僵尸过渡到收获。但是,由于您只在主线程中等待一个特定的PID..对不起,我的错误是,我以为您是从子进程而不是从子线程中派生孙子。你肯定在这里比赛。