Ответы:
Я думаю, что путаница возникает из-за того, что основной системный вызов, который обертывает ulimit, называется setrlimit .
выдержка из справочной страницы ulimit
Функция ulimit () должна контролировать пределы процесса. Пределы процесса, которые могут контролироваться этой функцией, включают в себя максимальный размер отдельного файла, который можно записать (это эквивалентно использованию setrlimit () с RLIMIT_FSIZE).
Кроме того, если вы посмотрите на setrlimit
справочную страницу, вызывается базовая структура данных, которая содержит информацию о лимитах rlimit
.
выдержка из страницы руководства setrlimit
getrlimit и setrlimit получают и устанавливают лимиты ресурсов соответственно. Каждый ресурс имеет связанный мягкий и жесткий предел, как определено структурой rlimit (аргумент rlim для getrlimit () и setrlimit ()):
struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */ };
Ссылаясь на справочную страницу ulimit руководства , это команда оболочки bash, которая контролирует ограничения системы и часть встроенных команд bash, таких как printf, read, source и т. Д.
Ссылаясь на страницу getrlimits , она представляет API через C / C ++, используя системные вызовы для управления системными ограничениями. Дополнительная документация по glibc лучше объясняет ограничения (= ограничения ресурсов).
ulimit
может быть две вещи:
интерфейс API POSIX 7 C, который устарел в пользу getrlimit()
: http://pubs.opengroup.org/onlinepubs/9699919799/functions/ulimit.html
Приложения должны использовать функции getrlimit () или setrlimit () вместо устаревшей функции ulimit ().
Это был не тот случай, когда sim
ответили на POSIX 6.
На GNU / Linux getrlimit()
и ulimit()
реализованы с помощью sys_getrlimit
системного вызова. Существует нет sys_ulimit
.
непревзойденная утилита CLI POSIX 7: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ulimit.html
Он может быть реализован либо ulimit()
или getrlimit()
.