linux中c“fopen”可以打开的最大文件数
c fopen
可以在Linux中同时打开的最大文件数是多少?
您可以通过以下操作查看允许的最大打开文件数(内核限制):
cat /proc/sys/fs/file-max
从内核文档引用:
file-max中的值表示Linux内核将分配的最大文件句柄数。 当您收到大量有关用尽文件句柄的错误消息时,您可能希望增加此限制。
需要实现在
提供FOPEN_MAX
。 这是可以同时打开实现保证的最小文件数。 您可能能够打开更多,但唯一的方法就是测试。
请注意,内核限制与此分开 – 它告诉您可以(可能)使用open
, creat
和其他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); } }