守护进程

守护进程是Linux系统中常驻后台的进程,不受用户登录注销影响,如ftp、ssh服务器。它们通常自成进程组和会话,通过setsid创建。创建守护进程涉及fork、setsid、chdir、umask等步骤,最终实现与终端无关,常用于提供系统服务。
摘要由CSDN通过智能技术生成

有关会话与进程组的概念,请参考上篇文章进程间关系
https://blog.csdn.net/aaronlanni/article/details/80184460
一、基本概念
1、守护进程也称精灵进程(Daemon),是运行在后台的一种特殊进程。不受用户登录与注销的影响,只要机器不关机,则 一直存在。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如,ftp服务器,ssh服务器,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond(定时任务)等。
2、Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但 系统服务进程(守护进程)不受用户登录注销的影响 ,它们一直在运行着。这种进程有一个名称叫守护进程(Daemon)。
3、守护进程一般自成进程组,自成会话,一般不受用户的注销与登录时的影响,且始终运行在后台,完成特定的工作。
4、查看守护进程ps -axj|grep -E ‘d$’也可以用它来专门查看操作系统中的守护进程
这里写图片描述
总结:

  • 凡是TPGID(与该终端关联的作业)一栏写着-1的都是没有控制终端的进程,也就是守护进程。
  • 在COMMAND一列⽤用[]括起来的名字表示内核线程,这些线程在内核里创建,没有用户空间代码(操作系统自己启动,不用用户自己的操作),因此没有程序文件名和命令行,
  • 通常采用以k开头的名字,表示Kernel。 init进程我们已经很熟悉了,udevd负责维护/dev目录下的设备⽂件,acpid负责电源管理,syslogd负责维护/var/log下的日志文件
  • 可以看出,守护进程通常采用以d结尾的名字,表示Daemon。
    5、后台进程与守护进程的区别
    后台进程受用户注销与登录的影响,而守护进程不受用户登录与注销的影响,因此可以说守护进程比后台进程更加靠后。通常守护进程不区分其前后台的概念。
    6、守护进程的特点
    1)守护进程本质上也是孤儿进程
    2)守护进程自成进程组,自成会话
    3)守护进程与终端无关(因为其自成会话)
    二、守护进程的创建
    创建守护进程最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader
#include <unistd.h>
pid_t setsid(void);

注意事项:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值