进一步阅读

进一步阅读

当然,文件可以是打开的,也可以是不打开的。

然而,文件描述符的定义是指一个打开的文件(对吗?)。 (嗯,除非它指的是文件以外的东西,比如管道或其他东西。但它仍然是打开的。)

我多次遇到过“打开文件描述符”这个短语。我相信这是多余的,事实上除了打开的文件描述符之外没有其他类型的文件描述符 - 但我想验证这一点。

除了“打开”之外,文件描述符是否处于任何其他状态? (当它关闭时,它不就不再存在了吗?)

答案1

一个程序执行此操作:

关闭(0);

标准输入文件描述符没有更改值,但它不再引用打开的文件描述。它可用于重新分配。随后尝试使用它,例如,read()将导致EBADF因为同时它仍然是一个文件描述符它不是引用打开文件描述的已分配文件。它是一个坏的文件描述符。

进一步阅读

  • close()The Open Group 基本规格第 7 期。IEEE 1003.1:2008。开放组。 2018.
  • read()The Open Group 基本规格第 7 期。IEEE 1003.1:2008。开放组。 2018.

答案2

抱歉,这似乎是一个非常细微的区别。请尽量不要假设其他人会知道与您相同的确切定义,并确保可以从上下文中解决任何歧义。我可以写一个同意你的答案,但似乎不同意其他答案,引用以下内容:

每个文件描述符恰好引用一个打开的文件描述

http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_258

因此,如果它不完全指代一个打开文件描述,它不可能是一个文件描述符。还

一旦文件关闭,文件描述符就不再存在,因为与其对应的整数不再引用文件。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html

相关内容