/*
**守护进程实例,每隔5s向/tmp/daemon.log中写入当前系统时
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
#include <string.h>
#define MAX_SIZE 65535
int main(int argc,char *argv[]){
pid_t pc;
int i,fd;
time_t timep;
struct tm *timenow;
char buff[128];
//1.创建子进程,主进程退出
pc = fork();
if(pc == -1){
perror("Create child process error");
exit(1);
}else if(pc > 0){
exit(0);
}
//2.在子进程中创建新会话
setsid();
//3.改变当前目录为根目录
chdir("/");
//4.重设文件权限掩码
umask(0);
//5.关闭文件描述符
for(i=0;i<MAX_SIZE;i++){
close(i);
}
//守护进程创建完毕,编写守护进程的工作
while(1){
if((fd = open("/tmp/daemon.log",O_CREAT|O_WRONLY|O_APPEND,0600)) == -1){
perror("Open error");
exit(1);
}
//获取当前日期
time(&timep);
timenow = localtime(&timep);
sprintf(buff,"%s",asctime(timenow));
write(fd,buff,strlen(buff));
close(fd);
sleep(5);
}
}
守护进程实例
最新推荐文章于 2023-04-24 17:02:20 发布