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

getpriority, setpriority - получить/установить приоритеты процессов

НАЗВАНИЕ
getpriority, setpriority - получить/установить приоритеты
процессов

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

int getpriority(int which, int who);
int setpriority(int which, int who, int prio);

ОПИСАНИЕ

Приоритеты процессов, групп процессов или пользователей,
указанных в which и who, можно узнать при помощи вызова
getpriority и установить при помощи вызова setpriority,
где which принимает значения PRIO_PROCESS, PRIO_PGRP или
PRIO_USER, а who воспринимается в зависимости от значения
which (.BR PRIO_PROCESS /-/- идентификатор процесса,
PRIO_PGRP /-/- идентификатор группы прцессов, PRIO_USER
/-/- идентификатор пользователя). Нулевое значение who
обозначает, что вызов применяется к текущему процессу,
группе процессов или пользователю. prio принимает
значения от -20 до 20. По умолчанию значение приоритета
равно 0; меньшие его значения означают превосходство над
другими процессами. Вызов getpriority возвращает значение
самого высокого из указанных процессов приоритета
(наименьшее числовое значение). Вызов setpriority
устанавливает значение приоритетов для всех указанных
процессов на нужную величину. Только суперпользователь
имеет право на уменьшение приоритета.

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Так как вызов getpriority может вернуть значение -1,
которое будет означать приоритет, необходимо очистить
внешнюю переменную errno до вызова, тогда Вы будете знать,
что значение -1 является сообщением об ошибке или
значением приоритета. Вызов setpriority при удачном его
завершении возвращает 0 или -1, если произошла ошибка.

КОДЫ ОШИБОК
ESRCH Не найден процесс, указанный в which и who.

EINVAL which не является PRIO_PROCESS, PRIO_PGRP или
PRIO_USER.

В добавление к написанному выше, setpriority может не
выполнится в случае возникновения следующих ошибок:

EPERM Идентификатор эффективного (effective) пользователя
вызывающего процесса не соответствует ни
идентификатору эффективного, ни реального (real)
пользователя найденного процесса;

EACCES попытка уменьшения приоритета без прав
суперпользователя.

ЗАМЕЧАНИЯ
Точное поведение при возникновении EPERM зависит от
системы. Вышеуказанное описание соответстует SUSv3, и,
похоже, действительно для всех систем, подобных SYSV.
Linux требует, чтобы реальный или эффективный
идентификатор пользователя вызывающего процесса
соответствовал реальному (а не эффективному)
идентификатору пользователя процесса who.

Действительный диапазон приоритетов отличается в разных
версиях ядра. В Linux до версии 1.3.36 этот диапазон был
от минус бесконечности до 15. С версии 1.3.43 этот
диапазон стал от -20 до 19, и системный вызов getpriority
возвращает 40..1 для этих значений (так как отрицательные
номера являются кодами ошибок). Библиотелный вызов
преобразует N в 20-N.

Подключение сейчас уже не требуется, но
улучшает портируемость. (В самом деле,
определяет структуру rusage с полями типа struct timeval,
определенными в .)

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD (впервые этот вызов появился в 4.2BSD).
Читать новости Linux в Telegram
Linux - getpriority, setpriority - получить/установить приоритеты процессов
Мы в соцсетях ✉