码迷,mamicode.com
首页 > 系统相关 > 详细

daemon_init函数:调用该函数把普通进程转变为守护进程

时间:2019-04-23 12:21:21      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:cti   守护进程   child   continue   ...   leader   off   init   nal   

#include    <unistd.h>
#include    <syslog.h>
#include    <fcntl.h>
#include    <signal.h>

#define    MAXFD    64

extern int    daemon_proc;      /* defined in error.c */

int daemon_init(const char *pname, int facility)
{
    int        i;
    pid_t    pid;

    if ( (pid = fork()) < 0)
        return (-1);
    else if (pid)
        _exit(0);               /* parent terminates */

    /* child 1 continues... */

    if (setsid() < 0)           /* become session leader */
        return (-1);

    signal(SIGHUP, SIG_IGN);
    if ( (pid = fork()) < 0)
        return (-1);
    else if (pid)
        _exit(0);               /* child 1 terminates */

    /* child 2 continues... */

    daemon_proc = 1;            /* for err_XXX() functions */

    chdir("/");                 /* change working directory */

    /* close off file descriptors */
    for (i = 0; i < MAXFD; i++)
        close(i);

    /* redirect stdin, stdout, and stderr to /dev/null */
    open("/dev/null", O_RDONLY);
    open("/dev/null", O_RDWR);
    open("/dev/null", O_RDWR);

    openlog(pname, LOG_PID, facility);

    return (0);                 /* success */
}

 

daemon_init函数:调用该函数把普通进程转变为守护进程

标签:cti   守护进程   child   continue   ...   leader   off   init   nal   

原文地址:https://www.cnblogs.com/soldierback/p/10755645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!