文件描述符的可能值是什么?

hum*_*ace 10 c linux validation file-descriptor

我有兴趣知道我可以期待的文件描述符的有效值.

请让我解释一下.我知道,例如,当我#include <unistd.h>在我的linux系统上使用然后调用打开文件进行阅读时:

int fileDescriptor;
fileDescriptor = open("/some/filename",O_RDONLY);
Run Code Online (Sandbox Code Playgroud)

可能会发生错误,因此我收到-1.
毫无疑问,( - 1)否定的必须具有某种特殊含义.是否所有其他值都是有效的文件描述符?即也是-2和-1023等负面的?

假设int是4个字节(sizeof(int)==4),那么就是

(-1) = 10000000 0000000 00000000 00000001
Run Code Online (Sandbox Code Playgroud)

将是唯一可检测的无效文件描述符?其他人会喜欢:

  • (0) = 00000000 0000000 00000000 00000000
  • (-2) = 10000000 0000000 00000000 00000010
  • (2) = 00000000 0000000 00000000 00000010

好吗?由于文件描述符可以存储4个字节,因此我可以拥有最多(2 ^(8*4)-1)个有效文件描述符,因此这将是我可以打开的最大文件数,对吗?

再说一遍:

我应该期望(有效)文件描述符是什么?

任何值,但-1?

Oli*_*rth 15

手册页:

open()返回一个文件描述符,一个小的非负整数.

然后:

open()creat()返回新的文件描述符,如果发生错误则返回-1