你能解释一下这个C代码吗?(创建一个deamon程序)

Eng*_*uad 2 c linux signals process file-descriptor

我想好好理解以下代码:

/* 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 */
Run Code Online (Sandbox Code Playgroud)

以下是我对上述代码的理解:

第1行:创建子进程并终止父进程,因此父进程将返回到shell,子进程将继续在后台执行该程序.

第二行:当子进程(执行程序的用户)终止时,忽略应该发送到父进程(谁控制终端)的信号.我觉得这条线会避免僵尸孩子的发生吗?

第3行:我读到它忽略了POSIX的挂断,我不确定它到底是什么.

第4行:关闭描述符文件为0到31的打开文件(我不知道为什么从0到31)

第5行:不知道它做了什么.


能帮我理解一下这段代码吗?提前致谢 :)

Bas*_*tch 6

你问的是什么setpgrp.

这是相关的手册页

你可以输入man setpgrp来获取它.

另请阅读linux守护程序howto

您也可以使用守护进程功能