Максимальное количество файлов, которые могут быть открыты c "fopen" в linux
каково максимальное количество файлов c fopen
может одновременно открываться в Linux?
4 ответов
вы можете увидеть максимально разрешенные открытые файлы (ограничение ядра), выполнив:
cat /proc/sys/fs/file-max
значение в файле-max обозначает максимальное количество файлов- ручки, что ядро Linux будет выделять. Когда получишь много из сообщений об ошибках о запуске дескрипторов файлов, вы можете хотите увеличить этот лимит.
реализация требуется для обеспечения FOPEN_MAX
на <stdio.h>
. Это минимальное количество файлов, которые могут быть открыты одновременно с гарантиями реализации. Вы могли бы открыть и больше, но единственный способ узнать это проверить.
обратите внимание, что ограничение ядра отделено от этого-это говорит вам, сколько файлов вы можете (потенциально) открыть с помощью open
, creat
и другие вызовы ОС. Стандартная библиотека вашей реализации C может (и часто будет) введут его собственный предел (например, статически выделяя массив FILE
). Теоретически наибольшее число, которое вы можете открыть, - это минимум ограничения, наложенного ядром и реализацией библиотеки, но предел ядра -почти всегда (намного) выше.
вообще говоря, если вы заботитесь об этом, вы наверное делать что-то не так.
он определяется стандартом POSIX. Удаление его вызывает проблемы переносимости.Кроме того, этот макрос упоминается в glibc.info (по крайней мере, в redhat-7.1).Пожалуйста, обратитесь к ссылке ниже OPEN_MAX не определен в пределах.h.
этот код должен сообщить max на вашем компьютере. Создайте файл "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);
}
}