Я пытаюсь реализовать другой вариант «хорошей» команды unix в C. Я видел определения системного вызова nice() и вызова setpriority(). Вызов nice() только увеличивает/уменьшает приоритет процесса. Если я хочу установить приоритет процесса на определенное значение, могу ли я использовать вызов nice()? По сути, помимо того, как изменяется приоритет, есть ли какая-либо разница между nice() и setpriority()?
Разница между nice и setpriority в unix
Ответы (3)
Это исторично. nice()
был введен задолго до setpriority()
. Для обратной совместимости функция nice
была сохранена.
sched_setscheduler()
.
- person ninjalj; 01.10.2011
nice
устанавливает ваш собственный приоритет (приятность текущего процесса). setpriority
позволяет установить качество других процессов (или групп процессов, или пользователей). Думайте об этом как renice
.
парень 3p хорошо
целое красиво (целое увеличение);
man 3p установить приоритет
int setpriority(int which, id_t who, int value);
nice()
изменяет значение nice текущего процесса относительно его текущего значения nice, поэтому процессу не нужно знать о своем начальном значении nice, его заботит только то, что он должен быть более приятным для системы (например, процесс запускает дочерний процесс). кто занимается какой-то фоновой обработкой, ребенок настраивает себя как хороший).
setpriority()
вариант использования — пользователь явно устанавливает абсолютные значения nice для определенных процессов.