NICE(2)

ИМЯ
nice - изменяет приоритет процесса

ОБЗОР
#include <unistd.h>

int nice(int inc);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

nice(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE

ОПИСАНИЕ
nice() добавляет значение аргумента inc к значению относительного приоритета (nice) вызывающего процесса (большее значение nice означает меньший приоритет). Только суперпользователь может задавать отрицательные значения или определять увеличение приоритета. Диапазон значений nice описан в getpriority(2).

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

ОШИБКИ

EPERM
    Вызывающий процесс пытается увеличить свой приоритет, указав отрицательное значение inc, но не имеет для этого прав. В Linux для этого требуется мандат CAP_SYS_NICE (но смотрите обсуждение ограничение ресурса RLIMIT_NICE в setrlimit(2)).

СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, 4.3BSD, POSIX.1-2001. Однако, в Linux и (g)libc (до glibc 2.2.4) возвращалось нестандартное значение, см. далее. В SVr4 описан дополнительный код ошибки EINVAL.

ЗАМЕЧАНИЯ
В SUSv2 и POSIX.1-2001 указано, что nice() должен возвращать новое значение nice. Однако, системный вызов Linux и библиотечная функция nice() в старых версиях (g)libc (до glibc 2.2.4) возвращают 0 при успешном выполнении. Новое значение nice можно определить с помощью getpriority(2). Начиная с glibc 2.2.4, nice() реализован как библиотечная функция, которая вызывает getpriority(2) для получения нового значения nice для возврата. В этой реализации успешное выполнение может законно вернуть -1. Для надёжного обнаружения ошибки, установите переменную errno в 0 перед вызовом и проверьте её значение, если nice() вернёт -1.

СМОТРИТЕ ТАКЖЕ
nice(1), renice(1), fork(2), getpriority(2), setpriority(2), capabilities(7), sched(7)