Linux 如何使用`wait`等待所有子进程退出,而不是等待第一个子进程退出.希望能给出代码片段?

Linux 如何使用`wait`等待所有子进程退出,而不是等待第一个子进程退出.希望能给出代码片段?,第1张

linux中的wait函数等到一个子进程退出就会返回,恢复到执行状态。要想等所有子进程退出可以用waitpid函数

pid_t wait(pid_t pid,int * status,int options)

pid>0时,只等待pid与该参数相同的子进程,如果该子进程一直没有退出,那么父进程会一直阻塞;

pid=0时,会等待同一个进程组的子进程,若子进程加入了其他进程组,waitpid()不再关心它的状态;

pid=-1时,waitpid()与wait()函数相同,将阻塞等待并回收一个子进程;

pid<-1时,会等待指定进程组的任何子进程,进程组的id等于pid的绝对值;

发信号,kill(子进程ID, SIG信号)

如果不只一个子进程,需要把所有的子进程ID存起来,然后用上述方法一个一个的kill

SIG信号需要能使子进程退出,如SIGQUIT,SIGINT...等一些默认的信号;也可以在子进程中捕获某些信号,然后子进程收到后自己退出

注意:最好是在子进程退出时,父进程要等待所有子进程退出


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8466266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存