更新时间:2023-09-08 21:21:44
你们好,最近小艾特发现有诸多的小伙伴们对于守护进程未运行怎么办视频教学,守护进程没有运行这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 守护进程是一个在后台运行的特殊进程。它独立于控制终端,定期执行某些任务或等待某些事件发生。守护进程是一个非常有用的进程。
2、 1.守护进程最重要的特性是在后台运行。2.守护进程必须与其预运行环境隔离。这些环境包括打开文件描述符、控制终端、会话和进程组、工作目录和文件创建掩码。
3、 这些环境通常由守护进程从执行它的父进程(尤其是shell)继承而来。3.守护进程的启动模式有其特殊之处。可以在Linux系统启动时从启动脚本/etc/rc.d启动。
4、 它可以由作业规划进程crond启动,也可以由用户终端(shell)执行。
5、 简而言之,除了这些特殊性,守护进程基本上和普通进程没什么区别。所以写守护进程,其实就是根据上面提到的守护进程的特点,把一个普通的进程改造成守护进程。如果对流程有更深的理解,就更容易理解和编程。
6、 daemon的编程规则(1)首先要做的是调用umask将文件模式创建掩码设置为0。文件权限屏蔽:屏蔽掉文件权限中相应的位。例如,有一个文件的权限掩码为050。
7、 它屏蔽了文件组所有者的可读和可执行权限(对应于binary,rwx,101)。由于fork函数创建的子进程继承了父进程的文件权限掩码,给子进程使用文件带来了很多麻烦。因此,
8、 将文件权限屏蔽设置为0(即不屏蔽任何权限)可以增强守护程序的灵活性。设置文件权限屏蔽的函数是umask。通常的用法是umask(0)。
9、 (2)调用fork,然后使父进程退出。if(PID=fork())exit(0);
10、 (3)调用setsid创建新的会话,该会话与控制终端和进程组分离。setsid函数用于创建新的会话,并充当会话组的组长。
11、 调用setsid有三个作用:将进程从原始会话的控制下解放出来;(b)让流程摆脱原流程组的控制;(c)将进程从原始控制终端的控制中释放出来;使用setsid函数的setsid()的目的是创建一个子进程,然后退出父进程,因为在创建守护进程的第一步就调用了fork函数。
12、 (4)将当前工作目录改为根目录。#为(I=0;定义NOFILE 256iNOFILEI)关闭(I);
13、 (5)关闭不再需要的文件描述符。这使得守护进程不再持有从其父进程(父进程可以是shell进程或其他进程)继承的一些文件描述符。
14、 (6)某些守护进程打开/dev/null使其具有文件描述符0、1和2,这样,任何一个试图读标准输入、写标准输出和标准出错的库例程都不会产生任何效果。因为守护进程并不与终端设备相关联,
15、 所以不能在终端设备上显示其输出,也无处从交互式用户那里接受输入。
以上就是守护进程没有运行这篇文章的一些介绍,希望对大家有所帮助。