目录

Linux daemon进程

什么是daemon进程

daemon进程是指长时间运行在后台的进程,也叫守护进程.

为什么会有daemon进程?

由于控制终端的原因(例如断开终端连接)会产生一些信号, 进程接受到这些信号的缺省动作是让进程退出.

daemon进程的特点:

没有控制终端,在后台运行

实现daemon进程的方法

    pid_t pid = fork();

    if( pid != 0 )
    {
        exit(0);//parent
    }

    //first children
    printf("first child: PID: %d\n", getpid());
    if(setsid() == -1)
    {
        printf("setsid failed\n");
        assert(0);
        exit(-1);
    }

    umask(0);

    pid = fork();

    if( pid != 0)
    {
        exit(0);
    }

    //second children
    printf("second child: PID: %d\n", getpid());
    chdir ("/");

    for (int i = 0; i < 3; i++)
    {
        close (i);
    }


    int stdfd = open ("/dev/null", O_RDWR);
    dup2(stdfd, STDOUT_FILENO);
    dup2(stdfd, STDERR_FILENO);