Linux实现守护进程创建
linux daemon 进程
Linux中创建守护进程
【Linux操作系统】守护进程的创建和逐步实现代码分析
创建一个守护进程,在time.log日志文件中每隔一秒,记录当前时间。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
time_t now_sec;
struct tm *now_time;
int i, ret;
pid_t daemon_pid = -1;
//创建子进程
daemon_pid = fork();
if(daemon_pid < 0){
perror("Create daemon_pid");
return -1;
}
//判断父子进程
if(daemon_pid > 0){
exit(0);//杀死父进程,得到孤儿进程
}
setsid();//让子进程脱离原本回话
chdir("/tmp");//修改当前工作路径,之后打开文件必须给绝对路径,不然会写到/tmp下的time.log中
umask(0);//重设文件权限掩码
//删除进程中所有的文件描述符
for(i = 0; i < getdtablesize(); i++){
close(i);
}
printf("ok\n");
//周期性执行的目标进程
while(1){
time(&now_sec);
now_time = localtime(&now_sec);
FILE *fp = fopen("/home/time.log", "a+");
if(NULL == fp){
perror("fopen");
exit(-1);
}
fprintf(fp, "%d年%d月%d日%d时%d分%d秒\n", now_time->tm_year+1900, now_time->tm_mon+1, now_time->tm_mday, now_time->tm_hour, now_time->tm_min, now_time->tm_sec);
//fflush(fp);
fclose(fp);
sleep(1);
}
return 0;
}