日期:2014-05-16  浏览次数:20788 次

daemon 不太明白
#include   <stdio.h>
#include   <sys/types.h>
#include   <time.h>

int   daemon_init()   {
        pid_t   pid;
        if   ((pid   =   fork())   <   0)   return   -1;
        else   if   (pid     !=   0)   exit(0);
        close(0);close(1);close(2);
        setsid();
        //chdir( "/ ");
        umask(0);
        return   0;
}

int   main()   {
        time_t   t;
        FILE   *fp;
        daemon_init();
        while   (1)   {
                fp   =   fopen( "test.log ", "a ");
                t   =   time(0);
                fprintf(fp, "%s\n ",asctime(gmtime(&t)));
                fclose(fp);
                sleep(2);
        }
}

我如果不加daemon_init();程序也照样能运行
daeman进程和普通的进程相比有什么优势吗?

------解决方案--------------------
daemon进程跟守护进程是有区别的,类似于后台进程( ./XXX &)
生成daemon进程需要脱离当前的会话组
不加daemon_init, 就是当前shell下的一个子进程...