#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<fcntl.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
#define MAXFILE 65535
int main()
{
pid_t pc;
int fd,i,len;
char *buf="This is a daemon\n";
len = strlen(buf);
pc = fork();
if(pc<0){
perror("fork");
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)) ==-1){
perror("open");
exit(1);
}
write(fd,buf,len+1);
sleep(5);
}
}
在指定文件中写入内容。
用tail -f /tmp/daemon.log查看消息,会随之变化。
创建守护进程步骤:
1.创建子进程,父进程退出。
2.创建新会话,脱离原会话。即:setsid
3.改变当前目录为根目录。即chdir
4.重设文件权限掩码。即umask
5.关闭文件描述符。即close