linux下守护进程的创建和sighup信号

本文介绍了Linux环境下守护进程的创建过程,包括通过fork创建子进程以脱离控制终端,忽略SIGHUP信号确保进程存活。讨论了何时进程会接收到SIGHUP信号的三种情况,涉及终端关闭、会话首进程退出和孤儿进程组的产生。
摘要由CSDN通过智能技术生成

先来说下我理解的守护进程:守护进程没有控制终端,我觉得可以把它理解为一个后台进程。

本篇文章假设读者知道什么是进程组与会话。

下面看一下unix环境高级编程中守护进程的创建流程:

1.首先在进程中调用fork进程,这样就能保证子进程不是进程的组长进程(因为进程组的组长进程不能调用setsid创建新的会话),然后结束掉父进程。这时子进程就变成了会话首进程,并且创建了一个会话。

2.接下来在会话首进程中忽略掉sighup信号,这样在接下来调用fork创建的子进程中也会继承对该信号忽略的处理。因为我们要创建一个没有控制终端的进程,所以我们可以这样做:在会话首进程中调用fork创建一个子进程,然后再结束掉会话首进程,因为会话首进程是负责和终端建立联系的,当我们把会话首进程结束掉之后,那么该会话也就没有控制终端了,结束掉会话首进程之后,子进程会收到sighup信号,因为这个对这个信号的默认处理为结束掉进程,所以如果前面我们不在会话首进程中把对该信号的动作设为忽略就会结束掉刚创建的子进程。当把会话首进程结束掉之后,那么该子进程就会变为该会话中的唯一一个进程,且没有控制终端,这个子进程就是我们要创建的守护进程。

下面是unix坏境高级编程中创建守护进程的源码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值