主要涉及3个函数:
1.openlog("daemontest", LOG_PID, LOG_USER);
2.syslog(LOG_INFO, "program started.");
3.closelog();
注:openlog函数中第一个参数标示在/var/log/message文件中出现日志的提示信息
#include
#include
#include
#include
#include
#include
#include
int daemon_init(void)
{
pid_t pid;
if((pid = fork()) < 0)
return(-1);
else if(pid != 0)
exit(0); /* parent exit */
/* child continues */
setsid(); /* become session leader */
chdir("/"); /* change working directory */
umask(0); /* clear file mode creation mask */
close(0); /* close stdin */
close(1); /* close stdout */
close(2); /* close stderr */
return(0);
}
void sig_term(int signo)
{
if(signo == SIGTERM)
/* catched signal sent by kill(1) command */
{
syslog(LOG_INFO, "program terminated.");
closelog();
exit(0);
}
}
int main(void)
{
if(daemon_init() == -1)
{
printf("can't fork self\n");
exit(0);
}
openlog("daemontest", LOG_PID, LOG_USER);
syslog(LOG_INFO, "program started.");
signal(SIGTERM, sig_term); /* arrange to catch the signal */
while(1)
{
sleep(1); /* put your main program here */
}
return(0);
}
阅读(4250) | 评论(0) | 转发(0) |