1. 首页
  2. 综合百科
  3. 守护进程未运行怎么开(守护进程的创建步骤)

守护进程未运行怎么开(守护进程的创建步骤)

简介:关于守护进程未运行怎么开(守护进程的创建步骤)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

第一步:概念

守护进程,又称守护进程,是在后台运行的特殊进程。它脱离控制终端,周期性地执行某些任务或等待某些事件发生。脱离终端的目的是避免在任何终端上显示正在执行进程的进程信息,进程不会被任何终端产生的中断信息终止。linux下的大多数服务器都是使用守护进程实现的。例如internet和web服务器httpd

2. 创建守护进程的一般步骤

(1)调用umask重置文件权限掩码

文件权限掩码:对文件权限中对应的位进行掩码。例如,文件权限掩码为050将屏蔽文件组所有者的可读和可执行权限。由于fork创建的子进程继承了父进程的文件掩码,这使得子进程很难使用该文件,因此将文件掩码设置为0(即不屏蔽任何权限)增强了守护进程的灵活性

(2)创建子进程退出父进程

为了转义控制终端,需要推断父进程,然后由子进程完成工作。在linux中,父进程和子进程一起先退出,创建一个孤儿进程。无论何时发现孤进程,它都会自动被进程1 (init)采用,因此原来的子进程就变成了init的子进程

调用setid(void)在子进程中创建一个新的会话

man 2 setsid查看setsid函数的描述信息。setsid -创建一个会话并设置进程组ID#include unistdhpid_t setsid(无效);如果调用进程不是进程组组长,Setsid()将创建一个新的会话。调用进程是新会话的领导者,新进程组的进程组领导者,并且没有控制tty。主叫进程的进程组号和会话号设置为主叫进程的PID。调用进程将是这个新进程组和这个新会话中的唯一进程。

进程组:一个或多个进程的集合。进程组由进程组ID唯一标识。每个进程组有一个leader进程,leader进程的进程号等于进程组号

setid函数创建一个新的会话,并作为会话组的组长,该会话组有以下三个功能

a.解除该进程对原有会话的控制b.解除该进程对原有会话组的控制c.解除该进程对原有会话终端的控制

使用setid函数的目的

创建守护进程的第一步是派生子进程,然后退出父进程。当fork被调用时,子进程复制父进程的会话时长、进程组和控制终端。虽然父进程退出,但会话持续时间、进程组和控制终端保持不变,因此它不是真正意义上的独立。使用ssetid函数可以使进程完全独立,从而逃避其他进程的控制。

(4)将当前目录修改为根目录

使用fork创建的子进程继承父进程的当前工作目录。由于在进程运行时无法卸载当前目录所在的文件系统,这可能会给以后的使用带来问题,因此通常的做法是将根目录作为守护进程的当前工作目录

关闭文件描述符

使用fork创建的子进程从父进程继承一些打开的文件。守护进程可能永远不会读取或写入这些打开的文件,但它们也会消耗资源。使用setid命令后,守护进程将与控制终端失去联系。因此,终端进入的进程无法到达守护进程。因此,文件描述符0、1、2已经失效,应该关闭

(6)退出守护进程的处理

当需要从外部停止某个守护进程时,使用kill命令停止该守护进程

# includestdio.h # includesignal.h # includeunistd.h # includestdlib.h # includefcntl.h # includesys/stat。Hvoid creat_daemon(void)else setid(0);//设置新的会话sa.sa_handler=SIG_IGN;sigemptyset (sa.sa_mask);sa.sa_flags=0;如果个sigaction (SIGCHLD sa, NULL) 0)如果其他(pid=fork() 0)如果(pid !=0)如果(目录(“/”)0)关闭(0);fd0=开放(/dev/null, O_RDWR);//关闭标准输入,标准输出,标准错误dup2(fd0,1);Dup2 (fd0, 2);那么为什么守护进程函数要fork呢? 两次

原因如下:

(1)第一个fork是为了使shell认为命令已经终止,而不必挂起在输入端。还有一个给后面的人。setid是守护进程函数中的一个重要调用,它完成了守护进程所做的大部分事情,然后在调用完成后,子进程是会话组的领导者,并且它脱离了原始终端的控制,第二个fork的目的是防止进程再次打开控制终端。打开控制终端的前提是该进程必须是会话组的组长。再次Fork子进程id !=ppid因此无法打开新的控制终端

本文主要介绍了关于守护进程未运行怎么开(守护进程的创建步骤)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/1450868.html