linux中c“fopen”可以打开的最大文件数

c fopen可以在Linux中同时打开的最大文件数是多少?

您可以通过以下操作查看允许的最大打开文件数(内核限制):

 cat /proc/sys/fs/file-max 

从内核文档引用:

file-max中的值表示Linux内核将分配的最大文件句柄数。 当您收到大量有关用尽文件句柄的错误消息时,您可能希望增加此限制。

需要实现在提供FOPEN_MAX 。 这是可以同时打开实现保证的最小文件数。 您可能能够打开更多,但唯一的方法就是测试。

请注意,内核限制与此分开 – 它告诉您可以(可能)使用opencreat和其他OS调用open多少文件。 C实现的标准库可以(并且经常会)强加自己的限制(例如,通过静态分配FILE数组)。 理论上,您可以打开的最大数量是内核和库实现所施加的限制的最小值 – 但内核的限制几乎总是(更高)。

一般来说,如果你关心这一点,你可能会做错事。

它由POSIX标准定义。 删除它会导致可移植性问题。另外,这个宏在glibc.info中提到(至少在redhat-7.1中)。请参考下面的限制OPEN_MAX在limits.h中没有定义 。

此代码应告知您计算机上的最大值。 在同一文件夹中创建文件“test”并运行它。 它基本上一直打开文件,直到它不能再存在。

 # include  # include  # include  # include  # include  # include  # include  # include  # include  int main(){ int t; for(;;){ t = open("test", O_RDONLY); if (t < 0){ perror("open"); exit(1); } printf("%d: ok\n", t); } }