#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <syslog.h>
#include <errno.h>
#include <signal.h>
#define FNAME "/tmp/out"
static FILE *fp;
static int daemonize(void)
{
int fd;
pid_t pid;
pid = fork();
if(pid < 0)
{
//perror("fork()");
return -1;
}
if(pid > 0)
return -1;
fd = open("/dev/null",O_RDWR);
if(fd < 0)
{
//perror("open()");
return -1;
}
dup2(fd,0);
dup2(fd,1);
dup2(fd,2);
if(fd >2)
{
close(fd);
}
setsid();
chdir("/");
// umask(0);
return 0;
}
static void daemon_exit(int s)
{
fclose(fp);
closelog();
exit(0);
}
int main()
{
struct sigaction sa;
sa.sa_handler = da
Linux C daemon源码
最新推荐文章于 2023-02-14 19:10:03 发布
本文详细解析Linux系统下C语言实现守护进程(Daemon)的步骤,包括进程脱离控制台、改变工作目录、重定向标准输入输出、信号处理等关键点,旨在帮助开发者深入理解守护进程的原理及其应用。
摘要由CSDN通过智能技术生成