发仔很忙 发表于 2013-04-07 17:54

linux文件描述符与文件表项关系问题

在Unix环境高级编程一书中,里面有道题目如下:

在许多程序都包含如下一段代码:

dup2(fd,0);
dup2(fd,1);
dup2(fd,2);
if(fd > 2)
    close(fd);

请问为什么要用if语句?可以以假设fd为1和fd为3的情况为例说明。

这个题目后面的部分答案如下:
   在fd为3的情况下,调用3次dup2后,有4个描述符指向相同的文件表项,这种情况下需要要关闭描述符3。

我对这个回答相当的困惑,为什么4个描述符指向相同的文件表项,就需要关闭描述符3。难道是一个文件表项只能有3个描述符指向吗?Why?求解答。

(题目来自 unix环境高级编程(第2版) 第3章 习题3.4)

linux_c_py_php 发表于 2013-04-07 20:20

因为fd最初可能是0, 1, 2中某一个, 在这种情况下结果只有3个fd关联该文件表项.

如果fd>3, 那么就是4个了呗.
页: [1]
查看完整版本: linux文件描述符与文件表项关系问题