Разница между хорошим и установленным приоритетом в Unix - PullRequest
8 голосов
/ 01 октября 2011

Я пытаюсь реализовать другой вариант команды 'nice' для unix в C. Я видел определения системных вызовов nice () и setpriority (). Вызов nice () только увеличивает / уменьшает приоритет процесса. Если я хочу установить приоритет процесса для определенного значения, я не могу использовать вызов nice ()? По сути, кроме того, как изменяется приоритет, есть ли разница между nice () и setpriority ()?

Ответы [ 3 ]

9 голосов
/ 01 октября 2011

Это исторически. nice() был введен задолго до setpriority(). Для обратной совместимости была сохранена функция nice.

8 голосов
/ 01 октября 2011

nice устанавливает ваш собственный приоритет (правильность текущего процесса). setpriority позволяет вам установить предпочтительность других процессов (или групп процессов или пользователей). Думайте об этом как renice.

мужчина 3р хороший

int nice (int incr);

man 3p setpriority

int setpriority (int which, id_t who, int value);

3 голосов
/ 01 октября 2011

nice() изменяет значение nice текущего процесса относительно его текущего значения nice, поэтому процессу не нужно знать о его начальном значении nice, его заботит только то, что он должен быть лучше для системы (например: процесс запускает дочерний элемент, который выполняет некоторую фоновую обработку, дочерний элемент устанавливает себя как хороший).

setpriority() вариант использования - это пользователь, явно устанавливающий абсолютные значения nice для конкретных процессов.

...