ОБЗОР
#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)).
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. Однако, в Linux и (g)libc (до
glibc 2.2.4) возвращалось нестандартное значение, см. далее. В SVr4 описан
дополнительный код ошибки EINVAL.
ЗАМЕЧАНИЯ
В SUSv2 и POSIX.1 указано, что 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.