daemon
步骤
fork
,退出父进程确保后面
setsid
可以执行成功setsid
创建新的会话(session),要求该进程不是进程组长(process group leader)。
当创建了新的会话,便脱离了原有的控制终端(tty)
再次
fork
,退出父进程可以防止潜在要求打开控制终端,因为控制终端必须要进程组长才可以打开
chdir
, 修改当前工作目录不影响
umount
umask
, 设置默认的文件屏蔽字关闭打开的文件描述符(0,1,2等,可通过
ls /proc/pid/fd
查看打开的文件描述符)若不关闭,虽然没有了控制终端,不会接受到相应控制信号,则仍能IO对应文件,如标准输出到启动时的终端,从终端读入!
- 需要注意,默认为行缓冲!