守护进程Daemon---fork两次

守护进程(Daemon)是Linux系统中独立于控制终端的后台进程,常用于执行特定任务。本文详细介绍了守护进程的概念、作用,以及通过fork一次与两次创建守护进程的原理。在创建守护进程时,通常涉及setsid函数、文件描述符关闭和信号处理等步骤。通过ps命令可观察到守护进程的特征,如TTY显示为'?',PID、PGID和SID相同(仅在fork一次时)。讨论了fork一次与两次的区别,并提供了使用系统调用创建守护进程的方法。
摘要由CSDN通过智能技术生成

1.什么是守护进程?
守护进程也叫精灵进程,是在后台运行的一种特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件;
在 linux系统启动时会有很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互,除守护进程外其他进程都是在用户登录或运行程序时创建,在系统注销时终止,但系统服务程序不受用户登录注销的影响(原因:它跟终端没有关系),我们把这种进程叫做守护进程。

一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程是非交互式程序,没有控制终端,所以任何输出,无论是向标准输出设备stdout还是标准出错设备stderr的输出都需要特殊处理。

2.为什么要有守护进程??

控制终端因为某些原因会发送一些信号,接受到信号的进程去执行这些信号的默认处理动作会导致进程退出。这就使得进程不能正常的处理某些任务,所以就需要像守护进程这样接受不到信号的进程。让进程独立与控制终端,执行某些任务或处理某些事件。

3.我们通过ps ajx命令查看系统的进程

ps ajx中ajx各参数代表的意思

  • 参数a,表示不仅列出当前进程,也列出所有其他用户进程;
  • 参数x,表示不仅列出控制终端的进程,也列出所有无控制终端的进程;
  • 参数j,表示列出与作业控制相关的信息;

    这里写图片描述

上图显示的是部分守护进程,因为精灵进程跟终端没有关系,所以TTY显示是‘?’的进程都为精灵进程;同时我们也可以看到,精灵进程的TPGID都为-1,且进程的COMMAND(执行命令)都用[]括号;

守护进程通常都已‘d’结尾,我们可以通过ps ajx|grep -E ‘d$’命令查看
这里写图片描述
这里写图片描述

init进程的id为1,所以上述父进程id为1的都是init进程创建的子进程,且每个守护进程的会话i

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值