Сколько файлов я мог открыться сразу?

На типичной ОС, сколько файлов я мог открыть сразу стандарт использования C диск IO?

Я пытался считать некоторую константу, которая должна сказать это, но на Windows XP 32 бита, который был ничтожными 20 или чем-то. Это, казалось, хорошо работало с более чем 30, хотя, но я не протестировал его экстенсивно.

Мне нужны приблизительно 400 файлов, открытых сразу в макс., поэтому если бы поддержка самой современной ОС, что, это было бы потрясающим. Это не должно поддерживать XP, но должно поддерживать Linux, Win7 и последние версии Windows Server.

Альтернатива должна записать мою собственную мини-файловую систему, которой я хочу избежать, если это возможно.

5
задан N 1.1 11 March 2010 в 13:14
поделиться

2 ответа

В Linux это зависит от количества доступных файловых дескрипторов. Вы можете использовать ulimit -n , чтобы установить / показать количество доступных FD для каждой оболочки.

См. Эти инструкции , чтобы узнать, как проверить (или изменить) значение доступного общего числа FD: s в Linux.

В этой статье службы поддержки IBM предполагается, что в Windows это число 512, и вы можете изменить его в реестре (как указано в статье)

Поскольку open () возвращает fd as int - размер int ограничивает также верхний предел. (не имеет значения, поскольку INT_MAX много)

2
ответ дан 14 December 2019 в 13:33
поделиться

Процесс может запросить ограничение с помощью системного вызова getrlimit.

#include<sys/resource.h>
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
printf("Max number of open files: %d\n", rlim.rlim_cur-1);
3
ответ дан 14 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: