Документация по LinuxLinuxDoc.Ru 🔍

getrlimit, getrusage, setrlimit - считывает/устанавливает ограничения использования ресурсов

НАЗВАНИЕ
getrlimit, getrusage, setrlimit - считывает/устанавливает
ограничения использования ресурсов

СИНТАКСИС
#include
#include
#include

int getrlimit(int resource, struct rlimit *rlim);
int getrusage(int who, struct rusage *usage);
int setrlimit(int resource, const struct rlimit *rlim);

ОПИСАНИЕ
getrlimit и setrlimit соответственно получают и
устанавливают ограничения использования ресурсов.
Значение resource должно быть одним из:

RLIMIT_CPU /* системное время в секундах */
RLIMIT_FSIZE /* максимальный размер файла */
RLIMIT_DATA /* максимальный размер данных */
RLIMIT_STACK /* максимальный размер стека */
RLIMIT_CORE /* максимальный размер файла core */
RLIMIT_RSS /* максимальный rss */
RLIMIT_NPROC /* максимальное количество процессов */
RLIMIT_NOFILE /* максимальное количество открытых файлов
*/
RLIMIT_MEMLOCK /* максимальный объем заблокированного
адресного пространства*/
RLIMIT_AS /* максимальный объем адресного
пространства */

Можно снять все ограничения с ресурса путем установки
ограничения на RLIM_INFINITY. RLIMIT_OFILE в BSD
называется RLIMIT_NOFILE.

Структура rlimit описывается следующим образом :

struct rlimit {
rlim_t rlim_cur;
rlim_t rlim_max;
};

getrusage возвращает текущие ограничения на ресурсы для
who, который может быть RUSAGE_SELF или RUSAGE_CHILDREN.
Первое запрашивает информацию о ресурсах используемых
текущим процессом, а второе о тех порожденных процессах,
которые завершились или завершение которых ожидается.

struct rusage {
struct timeval ru_utime; /* время работы пользователя */
struct timeval ru_stime; /* использованное системное время */
long ru_maxrss; /* максимальный rss */
long ru_ixrss; /* общий объем разделяемой памяти */
long ru_idrss; /* общий объем неразделяемых данных */
long ru_isrss; /* общий объем неразделяемых стеков */
long ru_minflt; /* количество процессов подгрузки страницы */
long ru_majflt; /* количество ошибок при обращении к странице */
long ru_nswap; /* количество обращений к диску при подкачке */
long ru_inblock; /* количество операций блокового ввода */
long ru_oublock; /* количество операций блокового вывода */
long ru_msgsnd; /* количество отправленных сообщений */
long ru_msgrcv; /* количество принятых сообщений */
long ru_nsignals; /* количество принятых сигналов */
long ru_nvcsw; /* количество переключений контекста процессом */
long ru_nivcsw; /* количество принудительных переключений контекста */
};

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном завершении вызова возвращается ноль. При
ошибке возвращается -1, а переменной errno присваиваются
соответствующие значения.

КОДЫ ОШИБОК
EFAULT rlim или usage указывают на недоступную область
адресного пространства.

EINVAL getrlimit или setrlimit вызывается неправильным
resource, или getrusage вызывается неправильным
who.

EPERM производится попытка использования setrlimit() для
установки мягких (advisory) или жестких (mandatory)
ограничений поверх текущих жестких при отсутствии
прав суперпользователя, или суперпользователь
пытается установить значение RLIMIT_NOFILE больше
текущего максимума ядра.

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, BSD 4.3

ЗАМЕЧАНИЕ
Подключение сейчас уже не требуется, но
улучшает портируемость. (В самом деле, struct timeval
определяется в .)

Вышеописанная структура была взята из BSD 4.3 Reno. Не
все поля имеют смысл в Linux. Сейчас (в Linux 2.4)
поддерживаются только поля ru_utime, ru_stime, ru_minflt,
ru_majflt, и ru_nswap.
Читать новости Linux в Telegram
Linux - getrlimit, getrusage, setrlimit - считывает/устанавливает ограничения использования ресурсов
Мы в соцсетях ✉