大家好,小信来为大家解答以上问题。守护进程怎么启动,守护进程很多人还不知道,现在让我们一起来看看吧!
1、 守护进程(守护程序)是在后台运行的特殊进程。它独立于控制终端,定期执行某些任务或等待处理某些事件。守护进程是一个非常有用的过程。
2、 1,守护进程最重要的功能是在后台运行。2.守护进程必须与其预运行环境隔离。这些环境包括未封闭的文件描述符、控制终端、会话和进程组、工作目录和文件创建掩码。这些环境通常是守护进程从执行它的父进程(尤其是shell)继承而来。3.守护进程的启动方式有其特殊之处。可以在Linux系统启动时从启动脚本/etc/rc.d启动,由作业规划进程crond启动,由用户终端(shell)执行。
3、 总之,除了这些特殊性,守护进程基本上和普通流程没什么区别。所以写守护进程实际上是根据上面提到的守护进程的特性,把一个普通的过程转化为守护进程。如果你对流程有了更深的理解,那么理解和编程就更容易了。
4、 守护进程编程规则(1)首先要做的是调用uTask将文件模式创建掩码设置为0。文件权限屏蔽:指文件权限中相应位的屏蔽。比如有一个文件,它的权限掩码是050,屏蔽了文件组(对应二进制,rwx,101)的所有者的可读和可执行权限。由于fork函数创建的子进程继承了父进程的文件权限掩码,给子进程使用文件带来了很多麻烦。因此,可以通过将文件权限掩码设置为0(即不屏蔽任何权限)来增强this守护进程的灵活性。设置文件权限屏蔽的功能是umask。的通常用法是umask(0)。
5、 (2)调用fork,然后使父进程退出。if(PID=fork())exit(0);
6、 (3)调用setsid创建新的会话,离开控制终端和进程组。Setsid函数用于创建新的会话,并充当会话组的领导者。
7、 调用setsid有三个作用:(a)使进程脱离原会话的控制;(b)使流程脱离原始流程组的控制;(c)让进程摆脱原控制终端的控制;Setsid()使用setsid函数的目的:因为创建的第一步守护进程调用fork函数创建子进程然后退出父进程。当调用fork函数时,子进程复制会话周期、进程组、控制终端等。父进程的。虽然父进程退出,但会话期间、进程组、控制终端等。没有改变。因此,它不是真正独立的。使用setsid函数后,进程可以完全独立,从而摆脱其他进程的控制。
8、 (4)将当前工作目录改为根目录。#为(I=0;定义NOFILE 256iNOFILEI)关闭(I);
9、 (5)关闭不再需要的文件描述符。这使得守护进程不再持有一些从其父进程继承的文件描述符(父进程可能是一个shell进程或其他某个进程)。
10、 (6)一些守护进程打开/dev/null使其具有文件描述符0、1和2。这样,任何试图读取标准输入、写入标准输出和标准错误的库例程都不会产生任何效果。因为守护进程与终端设备没有关联,其输出无法在终端设备上显示,也无处接受交互用户的输入。
本文到此结束,希望对大家有所帮助。
标签:
免责声明:本文由用户上传,如有侵权请联系删除!