创建守护进程时打开0,1,2描述符

问题描述 投票:0回答:1

APUE(图13.1)表示创建守护进程时,关闭所有打开的文件描述符后,将描述符0,1,2附加到/dev/null,如下所示:

/*
* Close all open file descriptors.
*/
if (rl.rlim_max == RLIM_INFINITY)
rl.rlim_max = 1024;
for (i = 0; i < rl.rlim_max; i++)
close(i);
/*
* Attach file descriptors 0, 1, and 2 to /dev/null.
*/
fd0 = open("/dev/null", O_RDWR);
fd1 = dup(0);
fd2 = dup(0);

我的问题是:是否有必要附加文件描述符 0、1、2 还是所有文件描述符都可以保持不附加?

linux unix daemon
1个回答
0
投票

如果有任何东西尝试访问这些描述符中的任何一个,您将收到错误,这是很难避免的。如果您可以完全控制所有读取和写入,则没有必要;但是打开文件描述符比确保任何地方都没有尝试打印消息、发出错误消息或诊断消息或读取标准输入要容易得多。

© www.soinside.com 2019 - 2024. All rights reserved.