守护进程以及fork两次的问题

守护进程在Linux中常作为系统服务持续运行,它们独立于控制终端且不受用户登录注销影响。特点包括:独立于控制终端、是孤儿进程、自成会话和进程组。创建守护进程涉及umask()、fork()、setsid()、chdir()等步骤。两次fork()技术用于确保进程彻底脱离终端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

守护进程?
守护进程也称“精灵进程”,一般而言,守护进程7*24h运行着,它不受用户登录与注销的影响。Linux中的很多系统服务进程就是守护进程。

如何识别守护进程?
凡是TPGID为-1的进程都是守护进程,通常守护进程的命名以”d”结尾,表示daemon。这里写图片描述

守护进程的特点
(1)独立于控制终端。
控制终端可以给进程发送信号,而这些信号可能会导致进程退出,这就使得进程不能正常的处理某些任务,特别是系统任务。所以就需要让进程独立于控制终端去执行某些任务或处理某些事件。
(2)守护进程是孤儿进程。
因为守护进程的父进程是1号进程init。
(3)守护进程自成会话,且是会话的话首进程。
这要求调用setsid()创建会话的进程不能为进程组的组长进程即进程组中的第一个进程,所以当前进程要先fork()创建出子进程再调用setsid()。
(4)守护进程自成进程组,且是进程组的组长进程。
(5)守护进程不受用户登录和注销的影响。
守护进程独立于控制终端,不能直接和用户交互。

如何创建守护进程&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值