pid_t first = fork()
if(first == 0) {
// ... thread function
exit(0);
}
setpgid(first, 0); // creates a new process group
for(int i=0; i<10; i++)
{
pid_t pid = fork();
if(pid == 0)
{
// ... thread function
exit(0);
}
setpgid(pid, first); // joins the process group
}
int status;
waitpid(-first, &status, WUNTRACED);
1条答案
按热度按时间xytpbqjk1#
如果可以使它们都成为同一个进程组的一部分,那么可以对
waitpid
使用取反后的进程组id。例如
这将等待以这种方式创建的进程,但不等待其他子进程,并且不会占用其他退出代码。
如果您打算在子进程中调用任何
exec()
函数,您应该确保在此之前设置进程组id,您可以通过在主进程和子进程中都设置它来实现这一点。其他的是
setpgid(0, first)
。您需要包括
<unistd.h>
和<sys/wait.h>