Provided by:
manpages-ru_0.98-4_all 
ИМЯ
getpriority, setpriority - получить/установить приоритет программы
ОБЗОР
#include <sys/time.h>
#include <sys/resource.h>
int getpriority(int which, int who);
int setpriority(int which, int who, int prio);
ОПИСАНИЕ
Вызовом getpriority можно получить и вызовом setpriority можно
установить приоритет планировщика для процесса, группы процесса или
пользователя в зависимости от заданных значений which и who. Which
может принимать одно из значений PRIO_PROCESS, PRIO_PGRP, или
PRIO_USER, а who интерпретируется в зависимости от which (идентификатор
процесса для 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 Процесс был найден, но эффективному идентификатору пользователя
этого процесса не соответствует заданный в вызове эффективный
(или реальный) идентификатор пользователя.
EACCES Не-суперпользователь пытается назначить приоритет ниже нуля.
ЗАМЕЧАНИЯ
Детали условия возникновения ошибки EPERM зависят от системы. Ниже
дано описание, что по этому поводу говорит стандарт SUSv3 и далее что
происходит на системах стандрта SYSV. Linux требует, чтобы реальный
или эффективный идентификатор пользователя, производящего вызов
совпадали с реальным идентификатором пользователя для процесса,
указанного в who (вместо эффективного идентификатора пользователя).
Все BSD системы (SunOS 4.1.3, Ultrix 4.2, BSD 4.3, FreeBSD 4.3,
OpenBSD-2.5, ...) требуют чтобы эффективный идентификатор пользователя,
производящего вызов совпадал с реальным или эффективным идентифкатором
пользователя для процесса, указанного в who.
Фактический диапазон значений приоритета варьируется в зависимости от
версий ядра. Linux до 1.3.36 имел диапазон значений -infinity..15.
Linux начиная с 1.3.43 имеет диапазон значений -20..19 и системный
вызов getpriority возвращает для этих значений величины 40..1
(отрицательные числа показывают код ошибки). Библиотечный вызов
преобразует возвращаемое значение N в значение 20-N.
Включение заголовочного файла <sys/time.h> в настоящее время не
требуется, но увеличивает переносимость, написанной программы. (В
реальности, <sys/resource.h> определяет структуру rusage с полями типа
structtimeval, которая определяется в <sys/time.h>.)
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.4BSD (эти вызовы впервые появились в 4.2BSD).
СМОТРИ ТАКЖЕ
nice(1), fork(2), renice(8)
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2005