守护进程的创建

发布于:2023-01-24 ⋅ 阅读:(19) ⋅ 点赞:(0) ⋅ 评论:(0)

目录

一、进程的分类

二、什么是守护进程

三、使用守护进程的目的

四、如何创建守护进程

1、流程图示

2、步骤详解


一、进程的分类

在Linux的操作系统下,进程分别有三种,本文主要探讨这三种中的守护进程

50f5d0118f0c45f3a557f0a03b35eb7f.png 二、什么是守护进程

守护进程是一种运行在后台的特殊进程,它独立于控制终端并且周期性地执行某种任务或等待处理某些待发生的事件,不需要用户控制就能运行,并提供某种服务,一般为整个系统或者某个用户程序提供服务。

三、使用守护进程的目的

我们使用守护进程是为了让某个进程不因为用户、终端或者其他的变化而受到影响,能够让这个进程一直能够提供服务。Linux下许多服务都是通过守护进程来实现的,比如说0号的调度进程、1号的init进程,他们的运行都没有终端的限制。

四、如何创建守护进程

1、流程图示

7018f865b6e54a149badafc84de11c4c.png

2、步骤详解

1、创建子进程,父进程退出。首先,新被创建出的一个子进程,其不可能是进程组组长,这也为后续调用setsid()函数做了准备,setsid函数要求调用他的进程不能是一个进程组组长,否则会出错。然后,父进程退出,是为了让子进程独立出来。

关于进程、进程组、会话的关系:一句话,会话里包含一个或多个进程组,进程组中又包含一个或多个进程。

b19dc7e4617d403881dec11bb3e8b624.png

2、setsid函数的调用,setsid函数创建了一个新会话,能使那个刚被上一步创建出来的子进程完全脱离出来,脱离原终端的控制。

3、重设工作目录,一般就将其设置在根目录之下,这是为了安全起见,防止他被不小心清除了,当然也可以是放在别的安全的目录之下。chdir可以改变当前程序所在的目录位置。

4、重设文件掩码,将文件掩码设置为0,设零是为了防止他从父进程那继承下来的文件掩码对其产生影响。文件掩码会影响到文件操作的读写执行权限,所以马虎不得,万一我们需要在这个守护进程下使用一些文件的操作呢,是不,万一他就影响到了呢。

关于文件掩码文件权限

文件掩码的设置和文件权限的设置,对于文件来说,是两个相反的影响,打个比方,如果说文件权限设置是个buff,那文件掩码就是个debuff。

举个例子,我们给一个文件设置了文件权限是0666,如果这时的文件掩码是0022,那么最终的文件权限将是0666|0022 = 0644,此运算等价于0666 - 0022 = 0644 这样写是不是更好理解?相信你一定已经理解了。 

5、关闭文件描述符,此处关闭的是守护进程从原先他的父进程那继承下来的一些打开的文件流,关闭这些不必要的文件流,一来是为了减小资源的浪费,二来是为了避免一些不必要的错误。