Linux文件描述符的值是否总是小于打开的文件限制?

Linux文件描述符的值是否总是小于打开的文件限制?,linux,Linux,Linux文件描述符的“值”是否总是小于打开的文件限制 理论上,系统应重新使用封闭文件描述符的标识值。在一个进程中打开1021个文件后,默认情况下,我应该得到从0,1,2到1023的文件描述符值。如果我想打开另一个文件,我必须释放一些带有close的文件描述符,当我再次调用open时,系统将重新使用这些释放的标识。因此,在这种情况下,文件描述符的最大整数值应该是1023。对吗 我知道我可以使用ulimit-n、setrlimit和/proc/sys/fs/file max更改打开的文件限制。我只

Linux文件描述符的“值”是否总是小于打开的文件限制

理论上,系统应重新使用封闭文件描述符的标识值。在一个进程中打开1021个文件后,默认情况下,我应该得到从0,1,2到1023的文件描述符值。如果我想打开另一个文件,我必须释放一些带有
close
的文件描述符,当我再次调用
open
时,系统将重新使用这些释放的标识。因此,在这种情况下,文件描述符的最大整数值应该是1023。对吗


我知道我可以使用
ulimit-n
setrlimit
/proc/sys/fs/file max
更改打开的文件限制。我只是想知道我是否可以使用
char
变量存储打开的套接字文件描述符,如果我使用
setrlimit
将打开的文件限制减少到128,那么这些值的范围是从0到小于getrlimit()返回的当前限制的1

RLIMIT_NOFILE
这是一个大于系统可能分配给新创建的描述符的最大值的数字。如果这个限制是 如果超过,则分配文件描述符的函数将失败 errno设置为[EMFILE]。此限制限制了文件的数量 进程可以分配的描述符


谢谢我的计算机上getrlimit()的手册页上只显示“RLIMIT_NOFILE:此进程打开的最大文件数。”
   RLIMIT_NOFILE
          Specifies a value one greater than the maximum file descriptor number
          that can be opened by this process.  Attempts (open(2), pipe(2),
          dup(2), etc.)  to exceed this limit yield the error EMFILE.
          (Historically, this limit was named RLIMIT_OFILE on BSD.)