代码实现 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;
}
运行结果