当子进程结束时,它会向父进程发送SIG_CHLD信号,然后父进程使用wait waitpid waittid函数来捕获某一子进程的退出状态。当需要等待所有子进程全部退出时,我们可以设置SIG_CHLD为SIG_IGN,然后使用wait来阻塞直到所有子进程全部退出:
- int main()
- {
- signal(SIGCHLD, SIG_IGN);
- pid_t pid1;
- if((pid1 = fork()) == 0)
- {
- sleep(3);
- std::cout<<"child 1 exit."<<std::endl;
- exit(0);
- }
- pid_t pid2;
- if((pid2 = fork()) == 0)
- {
- sleep(5);
- std::cout<<"child 2 exit."<<std::endl;
- exit(0);
- }
- wait(NULL);
- std::cout<<"parent exit."<<std::endl;
- }
子进程管理技巧
本文介绍如何通过设置SIG_CHLD为SIG_IGN并使用wait函数,让父进程等待所有子进程退出的方法。通过示例代码展示了如何创建两个子进程,并使父进程在子进程全部结束后再退出。
948

被折叠的 条评论
为什么被折叠?



