syslog函数使用源码

4330阅读 0评论2012-08-29 gududesiling
分类:LINUX

主要涉及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);
}           
上一篇:去掉字符串中的空格算法
下一篇:vtysh實現命令補全功能