Linux学习日记18——守护进程

学习视频链接

北京黑马C++32期就业班课程(第一部分)_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1uk4y1m7Eu?p=756

目录

一、守护进程

1.1 简介

1.2 特点总结

二、进程组和会话

2.1 进程组

2.2 会话

2.3 可以使用 ps ajx 来查看进程组 ID 和会话 ID

2.4 进程组和会话的关系图

三、创建守护进程模型

3.1 流程

3.2 代码


一、守护进程

1.1 简介

Daemon(精灵)进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以 d 结尾的名字,如 ysftpd

Linux 后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp 服务器;nfs 服务器等

1.2 特点总结

Linux 后台服务进程

独立于控制终端

周期性的执行某种任务

不受用户登陆和注销的影响

般采用以 d 结尾的名字

二、进程组和会话

2.1 进程组

1、进程组是一个或者多个进程的集合,每个进程都属于一个进程组,引入进程组是为了简化对进程的管理。当父进程创建子进程的时候,默认子进程与父进程属于同一个进程组。

2、进程组 ID == 第一个进程 ID(组长进程)。如父进程创建了多个子进程,父进程和多个子进程同属于一个组,而由于父进程是进程组里的第一个进程,所以父进程就是这个组的组长,组长 ID == 父进程 ID

3、可以使用 kill -SIGKILL -进程组 ID(负的)来将整个进程组内的进程全部杀死

4、只要进程组中有一个进程存在,进程组就存在,与组长进程是否终止无关

5、进程组生存期:从进程组创建到最后一个进程离开

2.2 会话

1、一个会话是一个或多个进程组的集合

2、创建会话的进程不能是进程组组长

3、创建会话的进程成为一个进程组的组长进程,同时也成为会话的会长

4、需要有 root 权限(ubuntu 不需要)

5、新创建的会话丢弃原有的控制终端

6、建立新会话时,先调用 fork,父进程终止,子进程调用 setsid 函数

2.3 可以使用 ps ajx 来查看进程组 ID 和会话 ID

可以 fork 出几个子进程,然后查看进程组 ID 和会话 ID

2.4 进程组和会话的关系图

 

三、创建守护进程模型

3.1 流程

1、创建子进程,父进程退出

所有工作在子进程中进行形式上脱离了控制终端

2、在子进程中 创建新会话

setsid() 函数

使子进程完全独立出来,脱离控制

3、改变当前目录为根目录

chdir() 函数

防止占用可卸载的文件系统

也可以换成其它路径

4、重设文件权限掩码

umask() 函数

防止继承的文件创建屏蔽字拒绝某些权限

增加守护进程灵活性

5、关闭文件描述符

继承的打开文件不会用到,浪费系统资源,无法卸载

6、开始执行守护进程核心工作守护进程退出处理程序模型

3.2 代码

 

兄弟们,我电脑崩了,大家不要轻易尝试。老师电脑挂起重新启动后进程还在

​​​​​​​

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

herb.dr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值