写一个简单的守护进程
每过10s向某文件中写入一定的数据
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, const char *argv[])
{
pid_t pid = fork();
if(pid < 0)
{
perror("fail to fork");
return -1;
}
else if(pid > 0)
{
pid_t par = getpid();
kill(par,SIGKILL); //杀死父进程,形成孤儿进程
}
else
{
sleep(1);
setsid();
chdir("./");
umask(0);
int i;
for(i = 0; i < getdtablesize(); i++) //关闭文件描述符
{
close(i);
}
int fd = open(argv[1],O_CREAT | O_WRONLY | O_APPEND ,0777);
char c[10] = "liukuan";
while(1)
{
sleep(5);
write(fd ,c ,sizeof(c));
}
}
return 0;
}
通过杀死父进程,主动进入孤儿进程,从而让子进程呗1号进程(init进程)收养。
函数很简单,用exit也可以结束进程。插一嘴:_exit不会刷新缓冲区,exit会。