Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2237717
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: LINUX

2012-08-29 10:03:44

主要涉及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);
}           
阅读(4147) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~