Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

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

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/resource.h>

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

ОПИСАНИЕ

       С помощью вызова getpriority() можно получить приоритет планирования (scheduling priority)
       процесса, группы процессов или пользователя, которые заданы в аргументах which и who, а  с
       помощью вызова setpriority() назначить его. Атрибут процесса этих системных вызовов тот же
       самый что атрибут (так называемое значение уступчивости «nice»), с которым работает  вызов
       nice(2).

       Значением  which может быть одно из: PRIO_PROCESS, PRIO_PGRP или PRIO_USER, а значение who
       рассматривается относительно which  (идентификатор  процесса,  если  PRIO_PROCESS;  группы
       процесса,  если  PRIO_PGRP;  идентификатор пользователя, если PRIO_USER). Нулевое значение
       who означает (соответственно) вызывающий процесс, группу вызывающего процесса или реальный
       идентификатор пользователя вызывающего процесса.

       Аргумент  prio  — это значение в диапазоне от -20 до 19 (смотрите ЗАМЕЧАНИЯ ниже), где -20
       это наивысший приоритет, а 19 — наинизший. Попытка задать приоритет  вне  этого  диапазона
       просто  подгоняется  под  диапазон.  По  умолчанию приоритет равен 0; низкие значения дают
       процессу больший приоритет при планировании.

       Вызов getpriority() возвращает  наивысший  приоритет  (наименьшее  числовое  значение)  из
       приоритетов  всех  указанных  процессов. Вызов setpriority() устанавливает приоритеты всех
       указанных процессов в заданное значение.

       Обычно, только привилегированный процесс может  понижать  значение  уступчивости  (т.  е.,
       повышать  приоритет).  Однако  начиная  с  Linux  2.6.12 непривилегированный процесс может
       понизить значение уступчивости процесса  назначения,  у  которого  установлено  подходящее
       мягкое ограничение RLIMIT_NICE; подробности смотрите в getrlimit(2).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On  success,  getpriority()   returns  the  calling  thread's  nice  value, which may be a
       negative number.  On error, it returns -1 and sets errno to indicate the error.

       Since a successful call to getpriority()  can legitimately return  the  value  -1,  it  is
       necessary  to clear errno prior to the call, then check errno afterward to determine if -1
       is an error or a legitimate value.

       setpriority()  returns 0 on success.  On failure, it returns -1 and sets errno to indicate
       the error.

ОШИБКИ

       EACCES Вызывающий  пытается  понизить  значение  уступчивости  (то есть повысить приоритет
              процесса), но он не имеет на это прав (в Linux: не имеет мандата CAP_SYS_NICE).

       EINVAL Значение which не равно PRIO_PROCESS, PRIO_PGRP или PRIO_USER.

       EPERM  Процесс был найден, но эффективному идентификатору пользователя этого  процесса  не
              соответствует   заданный   в   вызове   эффективный  (или  реальный)  идентификатор
              вызывающего и  у вызывающего нет прав (в Linux:  не  имеет  мандата  CAP_SYS_NICE).
              Смотрите ЗАМЕЧАНИЯ далее.

       ESRCH  Не найдено процессов, которые заданы значениями which и who.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD (эти интерфейсы впервые появились в 4.2BSD).

ЗАМЕЧАНИЯ

       Дополнительную информацию о значении уступчивости смотрите в sched(7).

       Замечание:  дополнительное  свойство  «autogroup»  из  Linux 2.6.38 означает, что значение
       уступчивости во многих случаях  больше  не  работает  как  обычно.  Подробней  смотрите  в
       sched(7).

       Потомок,  созданный  с  помощью  fork(2),  наследует  значение  nice  родителя. При вызове
       execve(2)  значение nice сохраняется.

       The details on the condition for EPERM depend on the system.   The  above  description  is
       what  POSIX.1-2001  says,  and  seems  to be followed on all System V-like systems.  Linux
       kernels before Linux 2.6.12 required the real or effective user ID of the caller to  match
       the  real  user  of  the process who (instead of its effective user ID).  Linux 2.6.12 and
       later require the effective user ID of the caller to match the real or effective  user  ID
       of  the  process who.  All BSD-like systems (SunOS 4.1.3, Ultrix 4.2, 4.3BSD, FreeBSD 4.3,
       OpenBSD-2.5, ...) behave in the same manner as Linux 2.6.12 and later.

   Отличия между библиотекой C и ядром
       The getpriority system call returns nice values translated to the  range  40..1,  since  a
       negative  return  value  would be interpreted as an error.  The glibc wrapper function for
       getpriority()  translates the value back according to the  formula  unice  =  20  -  knice
       (thus,  the 40..1 range returned by the kernel corresponds to the range -20..19 as seen by
       user space).

ДЕФЕКТЫ

       Согласно POSIX, значение nice — свойство процесса. Однако в текущей реализации  Linux/NPTL
       нитей  POSIX  значение  nice  —  атрибут нити: различные нити в одном процессе могут иметь
       разные значения nice. Переносимые приложения не  должны  полагаться  на  поведение  Linux,
       которое может стать стандартом в будущем.

СМ. ТАКЖЕ

       nice(1), renice(1), fork(2), capabilities(7), sched(7)

       Файл  Documentation/scheduler/sched-nice-design.txt  из  дерева  исходного кода ядра Linux
       (начиная с Linux 2.6.23)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,    Dmitry   Bolkhovskikh   <d20052005@yandex.ru>,   Vladislav
       <ivladislavefimov@gmail.com>,   Yuri   Kozlov   <yuray@komyakino.ru>   и    Иван    Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.