POSIX определяет множество таких ограничений как необязательные.Если предел FOO не определен в limits.h
, это означает, что система может не иметь такого ограничения, или предел может изменяться во время выполнения или зависеть от имени пути, к которому он применяется.В этих случаях вы используете функции pathconf
, fpathconf
или sysconf
и макросы _PC_*
и _SC_*
, например:
path_max = pathconf("/", _PC_PATH_MAX);
или:
page_size = sysconf(_SC_PAGE_SIZE);
К сожалению, GNU (библиотека GNU C) определяет многие ограничения как переменные времени выполнения, когда они фактически постоянны в Linux, в некоторых (на мой взгляд, очень ошибочных) надеждах, что когда-нибудь ограничения будут сняты, и приложения будут немедленнобыть в состоянии воспользоваться снятием ограничений.Однако для надежности приложений и ядра на самом деле гораздо лучше иметь фиксированные ограничения, если они достаточно велики (как и ограничения Linux).