Daemon 进程

最近工作需要写一个Daemon 进程,特总结相关技术。

Deamon进程特点: (来自AUPE)

      

    1〉 与tty(用户终端)分离。

    2〉 关闭不需要的文件句柄。(STDIN/STDOUT/STDERR)

    

这些特点的主要目的是为了稳定和安全。通常用户终端会因用户操作产生大量的Signal,这些信号的默认行为有可能会导致Daemon 进程异常退出。


下面一步步解释Daemon的创建。

int daemonize()  //daemon init
{

// di
  pid = fork(); 

if (pid < 0) {
/* fork() Fail */
error_syslog("Fork nd proxy Failed");
exit(EXIT_FAILURE);
}
if (pid > 0) {
/* fork() Success */
exit(EXIT_SUCCESS);
debug_syslog("fork success");
}


if ((sid = setsid()) < 0) {
error_syslog("setsid Failed!");
exit(EXIT_FAILURE);
}


/* 改变根目录 (为了系统安全) */
if(chdir("/") < 0) {
error_syslog("chdir Failed");
exit(EXIT_FAILURE);
}


/* change default file permission */
umask(0);


/* close file handle */
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);

    return EXIT_SUCCESS;
}


你可能感兴趣的:(linux,Daemon)