一.守护进程解读
1.守护进程
就是系统后台运行的程序,就比如系统写日志的过程。
2.守护进程的创建
守护进程核心一点就是**子进程对setsid();
调用**,取代父进程的会话过程。
剩下的就是设置会话。
**(1) 改变工作目录确保程序路径上不会出现错误。
(2)设置文件的掩码。
(3)关闭打开的文件描述符。
..**
3.实际
上在我看来守护进程和僵尸进程的功能上的区别,在于一个干正事,一个不干正事罢了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>
int main(int argc,char **argv)
{
int i, fd ;
char *buf = "xi fu tai kuai\n" ;
pid_t pid = fork() ;//第一步,创建子进程
if (pid > 0)
{
exit(0);
}
if(pid==0)
{
setsid() ;//第二步,创建新会话
chdir("/home/lnh") ;//改变当前工作目录为跟目录
umask(0) ;//设置文件权限掩码
for(i = 0; i < getdtablesize(); ++i)//和close(STDIN_FILEND);等3个(in out err) 效果一致
{
close(i) ;//关闭文件权限描述符
}
//守护进程每隔10s打日志
while(1)
{
if (fd = open("/home/lnh/logrid.txt", O_CREAT|O_WRONLY|O_APPEND, 0666) < 0)
{
printf("open file error\n") ;
exit(1) ;
}
write(fd, buf, strlen(buf)+1) ;
close(fd) ;
sleep(3) ;
}
exit(0) ;
}
}