Daemon进程创建过程
Daemon创建过程:
1、fork,创建子进程。退出父进程。
2、setsid,创建新会话。脱离原会话、进程组、控制终端。
再次fork,与终端完全脱离。第二次fork的意义???? 先脱离原父进程,改成init进程为父进程;但此时是新建了一个进程组,当前进程是leader,即关联到session、tty,需要脱离;所以再次fork,脱离tty,则不再受到会话的干扰,变成完全独立的后台进程。
3、chdir,修改工作目录。通常改到根目录,也可以是tmp等其他目录。
4、umask,重设默认文件权限。文件权限掩码设置为0,可恢复所有默认权限。
5、close,关闭不需要的文件描述符(stdin,stdout,stderr等)。
6、signal,处理守护进程退出。设置处理kill操作导致的SIGTERM信号的handler。