1.概述
守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,在系统关闭时终止。因为它们没有控制终端,所以说它们是在后台运行的。
Linux系统有很多守护进程,它们执行日常事物活动。
2.守护进程特性
所有守护进程都是以超级用户(用户ID为0)的优先权运行。
没有一个守护进程具有控制终端—在利用ps -ef查询系统进程时终端名称设置为?、前台进程组ID设置为 1.缺少前台终端可能是由于精灵进程调用了setsid的结果。
除了update以外的所有精灵进程都是进程组的首进程,对话期的首进程,而且是这些进程组和对话期中的唯一进程。update是它所在进程组和对话期的唯一进程,但是该进程组的首进程已经终止
所有这些守护进程的父进程都是init进程。
3.守护进程编程规则
(1)创建子进程,父进程退出。从而保证该子进程为孤儿进程,孤儿进程在运行一段时间以后,所有的孤儿进程将自动交给init进程管理。
(2)调用setsid以创建一个新会话,并担任该会话组的组长。该会话组中只有一个进程,即该守护进程。此时,进程组ID改变,并且该进程脱离控制终端。(会话组是一个或多个进程组的集合)
(3)改变当前目录为根目录 chdir("/")
从父进程继承过来的当前工作目录可能在一个mnt的文件系统中。而在mnt文件系统中不能被拆卸。
(4)重设文件权限掩码
umask(0);
有继承的得来的文件方式创建屏蔽字可能会拒绝设置默写许可权。例如,若守护进程要创建一个组可读可写文件,而继承文件方式创建屏蔽字屏蔽了这两种许可权,则所要求的组可读、可写就不能起作用了。
(5)关闭不再需要的文件描述符
用fork函数创建的子程序会从父进程那继承一些打开的文件,由此为使守护进程就不在持有父文件继承来的某些文件描述符。
for(i = 0; i< MAXFILE; i++)
close(i);
(6)例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fontl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
#define MAXFILE 65535
int main()
{
pid_t pc;
int i,fd,len;
char *buf = "This is a Daemon \n";
len =strlen(buf);
pc = fork();
if(pc<0)
{
printf("error fork\n");
exit(1);
}
else if(pc>0)
{
exit(0);
}
setsid();
chdir("/");
umask(0);
for(i = 0; i<MAXFILE; i++)
close(i);
while(1)
{
if((fd=open("/tmp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600))<0)
{
perror("open");
exit(1);
}
write(fd,buf,len+1);
close(fd);
sleep(2);
}
}
分享到:
相关推荐
详述VOIP基础详述VOIP基础详述VOIP基础详述VOIP基础详述VOIP基础
Windows XP 常见的进程列表:1、最基本的系统进程;2、附加的系统进程;3、不常用服务;
Nand_Flash详述,读写时序及工作原理介绍,对开发有帮助
PCI总线协议基础详述.PDF 详述详述详述详述详述详述
----------------------- 日志服务器的搭建详述全文共6页,当前为第1页。 日志服务器的搭建详述全文共6页,当前为第2页。 日志服务器的搭建详述全文共6页,当前为第3页。 日志服务器的搭建详述全文共6页,当前为第4...
shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述shell sed 详述...
并发问题详述 并发问题详述 并发问题详述 并发问题详述 并发问题详述
LTE-MRO功能详述和优化验证.docx
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...图神经网络相关算法详述及实现源码+项目说明.zip
正则表达式不是万能的,但是在某些问题的解决上提供了一个便捷高效的方案,学习正则表达式的一些基础知识很有必要。本文从基本语法到一些高阶用法都有详细的说明。
nand flash详述.docx
软件设计加密解密详述
emc详细的测试项目,EMC测试就看他了
精致详细,可以了解一些图例的用法,更好的了解嵌入式
IEC61131详述pdf,IEC61131详述
linux2.6内核编译方法详述 linux2.6内核编译方法详述
计算机应用基础 计算机应用基础2详述全文共86页,当前为第1页。 第二章 Word2010的使用 2.1 制作培训通知 2.2 制作产品说明书 2.3 制作销售广告页 2.4 制作采购寻价单 2.5 制作宣传册 计算机应用基础2详述全文共86页...
本章主要介绍了华为云计算解决方案中运维功能,并从系统管理员及VDC管理员角度描述了各自的运维工作内容 精选-云计算运维详述全文共44页,当前为第1页。 学完本课程后,您将能够: 了解华为云计算的运维技术 了解...
企业信息化技术规范详述
计算机数控装置详述.pptx