c fopen
可以在Linux中同时打开的最大文件数是多少?
答案 0 :(得分:11)
需要在FOPEN_MAX
中提供<stdio.h>
。这是可以同时打开实现保证的最小文件数。您可以打开更多,但唯一的方法就是测试。
请注意,内核限制与此分开 - 它告诉您使用open
,creat
和其他OS调用可以(可能)打开多少文件。 C实现的标准库可以(并且经常会)强加自己的限制(例如,通过静态分配FILE
数组)。理论上,您可以打开的最大数量是内核和库实现所施加的限制的最小值 - 但内核的限制几乎总是(更高)。
一般来说,如果你关心这一点,你可能可能做错了。
答案 1 :(得分:3)
您可以通过执行以下操作查看允许的最大打开文件数(内核限制):
cat /proc/sys/fs/file-max
file-max中的值表示文件的最大数量 - 处理Linux内核将分配的内容。当你得到很多 有关用完文件句柄的错误消息,您可能会这样做 想增加这个限制。
答案 2 :(得分:2)
此代码应告知您计算机上的最大值。在同一文件夹中创建一个文件“test”并运行它。它基本上一直打开文件,直到它不能再存在。
# include <assert.h>
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <sys/types.h>
# include <sys/stat.h>
# include <sys/wait.h>
# include <string.h>
# include <fcntl.h>
int main(){
int t;
for(;;){
t = open("test", O_RDONLY);
if (t < 0){
perror("open");
exit(1);
}
printf("%d: ok\n", t);
}
}
答案 3 :(得分:1)
由POSIX标准定义。删除它会导致可移植性问题。另外,glibc.info中提到了这个宏(至少在redhat-7.1中)。请参考下面的链接 OPEN_MAX not defined in limits.h