【Linux学习笔记35(补充)】精灵进程的预备知识

引言

精灵进程又称守护进程。进程负责程序的基本服务,但是我们也希望这种服务能够在后台持续的进程,不会因为用户的切换或者登录终端的关闭而停止。但是首先我们要知道的概念是进程的对话概念。

进程的对话概念

在这里插入图片描述

  • 从上图中可以看到首先登录shell就是进入一个对话期,创建一个对话。
  • 然后在系统中,各种各样的进程被分为各种组,那么其实在方便与进程进行通信(发信号)。
  • 前台进程组可以接受控制终端的输入与产生的信号,那么具体指的是什么呢?下面以代码来说明:在这里插入图片描述
    在这里插入图片描述
    这个test1就是前台进程组。
    要让这个test1变为后台进程组其实很简单:
    在这里插入图片描述
    在这里插入图片描述
    可以看到我们已经不能通过控制终端去操作这个test1
    但是通过ps -e依然可以看到test1在后台运行中,但是终端一旦关闭,这个进程就会自动关闭了。

精灵进程的产生流程

在这里插入图片描述

  • 登录终端得到第一个session,并且首先拥有一个进程组,组长为P1(程序)
  • 产生新的会话New session:1、新的用户名登录。2、使用setsid()函数
  • 产生新的会话的目的是为了避免控制终端的干扰。
  • P1无法调用setsid(),因此P1使用fork(),产生子进程P2来调用setsid()产生新会话。
  • P2在New session中,但依然属于P1的进程组,因此在New session中的进程组ID与P1相同。若有信号发送到P1进程组,P2也会收到。
  • 为了能够让进程隐秘,P2使用setpgrp()创建新的进程组
  • 因此P2进入新的会话,新的进程组。但是P2是新会话的创始人,因此也会受到控制终端的干扰。
  • 为了避免控制终端的避免,P2继续fork()一个子进程P3,P3就成为了隐秘进程。

详细的精灵进程代码编写可以参考:
【Linux学习笔记35】教你写精灵进程(附精灵进程模板)


精灵进程的日志

精灵进程会在后台默默地运行,但是如果进程遇到了问题,精灵进程不能从频幕输出,也不能与控制终端交流。因此,精灵进程会将信息写入日志中。

在这里插入图片描述
那么在精灵进程创建的封装代码中:
在这里插入图片描述
代码运行结果:
在这里插入图片描述
在这里插入图片描述
一旦信息与之前信息一样,守护进程不会再往日志写入数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值