Provided by: manpages-ru_0.98-4_all bug

ИМЯ

       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