代码实现 main.c
#include<signal.h>
#include<syslog.h>
#include<fcntl.h>
static int daemon_proc = 0;
#define MAXDF 64
int test_daemon(const char* pName, int facility)
{int i;pid_t pid;if((pid = fork()) < 0){return -1;}else if(pid) {_exit(0);}if((setsid() < 0)){return;}signal(SIGHUP,SIG_IGN);if((pid = fork()) < 0){return -1;}else if(pid) {_exit(0);}daemon_proc = 1;chdir("/"); for(int i=0; i<MAXDF; ++i){close(i);}int p1 = open("/dev/NULL",O_RDONLY);int p2 = open("/dev/NULL",O_RDWR);int p3 = open("/dev/NULL",O_RDWR);openlog(pName,LOG_PID,facility); syslog(LOG_DEBUG, "daemon create\r\n");return 0;
}int main(int argc, char **argv)
{test_daemon("test_daemon",0);while(1){syslog(LOG_DEBUG, "daemon test\r\n");}return 0;
}
运行结果