[英]Can value of a file descriptor go beyond max opened file descriptor softlimit?
在我的程序中,我使用文件描述符值作为索引将一些与文件描述符相关的数据存储在一个数组中。 因此,如果我创建一个大小等于打开文件描述符的软限制的数组,我将拥有从 0 到(软限制-1)的数组索引。 我的问题是文件描述符 go 的值可以超出这个索引范围吗? (我正在使用 ubuntu 20.4 和 c 语言)。
是的,它可以。 软限制是你可以通过调用ulimit(2)
系统调用来改变的东西......所以你可以把它放在实际打开文件的数量之下,这意味着open(2)
将在下一次打开时失败,但是它不会影响您现在打开的实际打开文件数。 无论如何......让我们想象一下这种情况:
您仍然可以再打开 25 个文件(您现在有 50 个打开的文件)......并且 go 的范围在 0 到 24 之间,但其他文件继续从 50 到 99 打开。而且您无法打开更多文件,因为你用完了打开文件的限制。
顺便说一句,您从系统打开的系统调用中获得的描述符始终是可获得的最小值……因此,如果您避免触及 ulimits 最大打开文件数,那么您可以做您想做的事。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.