父进程结束时如何让fork的所有子进程也结束

父进程结束时怎么让fork的所有子进程也结束?
父进程结束时怎么让fork的所有子进程也结束?

------解决方案--------------------
fork子进程后,父进程记录子进程的进程id号,父进程结束时,向所有子进程发送kill信号。子进程收到信号后退出。
------解决方案--------------------
1、父进程主动登记子进程id,父进程退出时捕获信号,kill掉登记的子进程。

2、子进程主动检测父进程,具体方法有两种:
(a) 子进程设置定时器(或用单独线程跑),定时调用getppid()检测父进程父进程号是否变为1,即init进程,如果是则结束自身。
(b) 子进程设置定时器(或用单独线程跑),定时向父进程发送0信号(kill 0)检测父进程是否存在,如果不存在则结束自身。

3、第三方全局的类似于应用系统进程任务管理器,此种方法更加灵活些,可不用依赖进程的父子关系。

嗖了这3个不错,第2中方法比较可靠
------解决方案--------------------
pid_t wait(int *statloc);

pid_t waitpid(pid_t pid, int *statloc, int options);


------解决方案--------------------
atexit + kill
------解决方案--------------------
引用:
atexit + kill
这个好。嗯
------解决方案--------------------
引用:
pid_t wait(int *statloc);

pid_t waitpid(pid_t pid, int *statloc, int options);


用wait阻塞
------解决方案--------------------
5L's ok