您的位置:首页 > 运维架构 > Linux

【Linux】子进程的异步等待方式

2017-06-29 11:50 239 查看
        子进程在终止时会给父进程发 SIGCHLD 信号,该信号的默认处理动作是忽略,父进程可以自定义 SIGCHLD 信号的处理函数,这样父进程只需专心处理自己的工作,不必关心子进程了,子进程终止时会通知父进程,父进程在信号处理函数中调用 wait 清理子进程即可。

一、子进程退出时给父进程发送信号

vim mysig.c





vim Makefile



运行结果如下:



我们可以看到子进程退出时给父进程发送了 17 号信号,我们用命令 kill -l 查看信号列表,可以看到 17 号信号就是 SIGCHLD 信号。



二、父进程异步等待子进程

vim sigchld.c





vim Makefile



运行结果如下:



        我们可以发现父进程 fork 出子进程,子进程调用 exit(1)  终止,父进程自定义 SIGCHLD 信号的处理函数,在其中调用 wait 获得了子进程的退出状态并打印。父进程先每隔一秒打印一次,五秒后子进程打印,然后子进程彻底退出,父进程一直打印直到我们强制停止它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: