守护进程(Daemon)的编写

守护进程是Linux系统中的后台服务进程,常用于提供长期运行的服务。本文介绍了守护进程的编写步骤,包括创建子进程、改变会话、关闭文件描述符和重定向标准输入输出。通过示例代码展示了如何编写一个简单的守护进程,并提供了编译和运行方法。
摘要由CSDN通过智能技术生成
 

      守护进程,也就是通常所说的Daemon进程(又称精灵进程),是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是通过守护进程实现的,如作业规划进程crond、打印进程lqd等。

    在Linux终端执行进程时,当终端被关闭时,相应的进程都会自动关闭。但是守护进程却能够突破这种限制,它从被执行开始运转,直到整个系统关闭时才会退出。如果想让某个进程不因为用户、终端、或其他的变化而受到影响,那么就必须把这个进程变成一个守护进程。

 

(1)守护进程的编写步骤

①    创建子进程,父进程退出

     首先调用fork,然后使父进程调用exit函数退出,这一步给Shell进程造成程序运行完成的假象,让Shell进程把自己提到会话前台,此时用户在Shell终端里可以执行其他命令,从而让程序形式上脱离了控制终端。

     由于父进程已经先于子进程退出,会造成子进程没有父进程,此时子进程变成一个孤儿进程。在Linux中,每当系统发现一个孤儿进程,就会自动由1号进程(init进程)收养它,这样,子进程就会成了init进程的子进程。

 

②    调用setsid创建一个新会话

     在第1步调用fork函数后,子进程几乎是父进程的副本,虽然父进程退出了,但会话ID、进程组ID等并没有改变,因此,还不是真正意义上脱离控制终端,而setsid函数能够使进程完全独立出来。

    调用setsid函数后,该子进程成为新会话的首进程,成为一个新进程组的首进程而且没有控制终端。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值