900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 父进程退出后 子进程自动消亡

父进程退出后 子进程自动消亡

时间:2019-10-28 02:44:03

相关推荐

父进程退出后 子进程自动消亡

今日做项目,通过systemctl去管理服务A。因为A依赖很多动态库,所以实际执行的时候,是由B这个脚本将A带起来。这样,systemctl start A时,实际上是B先运行起来,然后B将A带起来。然后systemctl stop A时,kill了B,同时也将A杀死。

用systemctl,以服务的形式来管理时,发现父进程退出时,子进程就会自动退出。

但是如果不用systemctl来管理呢?仅仅通过bash来运行脚本B,发现A运行起来了。但是手动去kill掉B这个脚本时,A程序仍然在运行。

查了一下资料,发现如果需要“父进程退出后,子进程自动消亡”,一种简单的办法是在子进程中调用

prctl(PR_SET_PDEATHSIG, SIGHUP);或者

prctl(PR_SET_PDEATHSIG, SIGTERM)

这个函数的作用是,当父进程挂掉后,会发送SIGHUP或者SIGTERM信号给子进程。做了测试程序,果然,这次关掉B脚本后,A就退出了。后来又在A的代码中加了个信号处理函数,处理了SIGTERM和SIGHUP,发现kill掉B脚本的时候,A确实接收到了信号。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。