nice(2) изменяет приоритет процесса

ОБЗОР

#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.