当前位置:   article > 正文

Linux守护进程_守护进程ps -ajx

守护进程ps -ajx

首先,我们在Linux的shell下面运行一条指令ps -ajx,其中 ps是查看当前系统进程状态的指令,-a显示由其它用户所拥有的进程的状态,-x显示没有控制终端的进程的状态,-j显示与作业相关的信息。
(守护进程1)

我们在图中看到,图中所列举的这些都是与控制终端无关的进程,在Linux中我们称这些进程为守护进程,也叫做精灵进程,今天我们就来谈一谈Linux下面的守护进程把。


什么是守护进程?

守护进程也被称为精灵进程,是运行在后台的一种特殊的进程,它独立于终端并且周期性的执行某种任务。他们的生期很长,在系统引导装入时启动,仅在系统关闭时才停止(注意这里是停止,而不是终止)。


守护进程的特征

如上图,我们发现所有的守护进程首先他们是没有控制终端的,即他们独立于终端(他们的终端名被设置为?)。其中内核守护进程以控制终端的方式启动,用户层守护进程缺少控制终端是因为他们调用了setsid函数的结果;后面我们将会提到。许多用户层的守护进程都是进程组的组长进程,以及会话的首进程,即他们自成进程组,自成会话。,最后所有用户层守护进程的父进程都是init进程。

怎样创建一个用户层的守护进程

创建一个用户层守护进程的步骤如下:
1. 首先,调用umask函数设置文件权限,这是因为守护进程可能会创建某些文件,所以我们要设定特定的权限。
2. 调用fork函数,然后让父进程被终止;这样做的原因是因为下面我们要调用setsid函数创建会话,因为setsid函数不能被组长进程调用,而如果我们只创建一个进程,然后再让这个进程创建子进程,那么父进程一定是组长进程,让父进程终止的原因是因为有一条规则叫做孤儿进程的领养机制,这样我们就能保证子进程的父进程为1号进程了。
3. 调用setsid函数创建一个新的会话;下面我们先来看看setsid函数把:

       #include <unistd.h>

       pid_t setsid(void);
  • 1
  • 2
  • 3
  • 4

这个函数的功能主要有下面几点:

  • 调用该函数的当前进程成为所创建会话的首进程,此外,当前进程时会话中的唯一进程。
  • 该进程创建了一个新的进程组,并成为组长进程。
  • 调用完该函数后,该进程就没有控制终端了,因为setsid函数会切断当前进程与其控制
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/236330?site
推荐阅读
相关标签
  

闽ICP备14008679号