1、在父进程下产生子进程。
2、关闭父进程,使子进程成为一个新会话的头进程和新进程组的头进程,从而与父进程所在的进程组和会话脱钩。
3、忽略SIGHUP信号,防止之后新产生的进程被关闭。
4、在子进程下(后面我们称这个子进程为父进程SP)再产生子进程,使之成为守护进程。这样做的原因是如果这时开启一个控制终端,父进程SP会自动获取控制终端,因为父进程SP为会话头进程,会话头进程会自动获取控制终端。从而不能成为守护进程。
5、关闭父进程SP。
6、改变工作目录为根目录,这样做的原因是如果守护进程在一个文件系统中产生,这个文件系统在需要卸载的时候就无法卸载
7、关闭本守护进程继承来的打开着的描述符。
8、打开/dev/null作为本守护进程的标准输入,输出,错误输出,这样做的原因是保证这三个常用描述符(为0,1,2)为打开着的,以防被其他命令占据这三个描述符。