Разница между nice и setpriority в unix

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

3 ответов


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


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

man 3p nice

int nice (int incr);

человек 3Р метод setpriority

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


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

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