【发布时间】:2011-12-08 23:03:28
【问题描述】:
我想好好理解下面的代码:
/* Become deamon + unstoppable and no zombies children (= no wait()) */
if(fork() != 0) return 0; /* Parent returns OK to shell */
signal(SIGCLD, SIG_IGN); /* ignore child death */
signal(SIGHUP, SIG_IGN); /* ignore terminal hangups */
for(i = 0; i < 32; i++) close(i); /* close open files */
setpgrp(); /* break away from process group */
我是这样理解上面的代码的:
第一行:创建子进程并终止父进程,这样父父进程将返回shell,子进程将继续在后台执行程序。
第 2 行: 当子进程(正在执行程序)终止时,忽略应该发送给父进程(正在控制终端)的信号。我觉得这条线会避免僵尸孩子的出现吗?
第 3 行:我读到它忽略了 POSIX 的挂断,我不确定它到底是什么。
第 4 行:关闭描述符文件为 0 到 31 的打开文件(我不知道为什么从 0 到 31)
第 5 行:不知道它的作用。
你能帮我理解这段代码吗?在此先感谢:)
【问题讨论】:
标签: c linux process signals file-descriptor