8

我正在尝试在 C 中实现 unix 的“nice”命令的不同风格。我已经看到了 nice() 系统调用和 setpriority() 调用的定义。nice() 调用仅增加/减少进程的优先级。如果我想将进程的优先级设置为特定值,我不能使用 nice() 调用吗?基本上,除了如何修改优先级之外, nice() 和 setpriority() 之间有什么区别吗?

4

3 回答 3

9

这是历史的。 nice()很久以前就介绍过了setpriority()。为了向后兼容,nice保留了该功能。

于 2011-10-01T05:09:26.850 回答
8

nice设置你自己的优先级(当前进程的好坏)。setpriority允许您设置其他进程(或进程组或用户)的友好度。将其视为renice.

男人 3p 不错

int 好(int incr);

man 3p setpriority

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

于 2011-10-01T05:07:37.447 回答
3

nice()修改当前进程相对于当前 nice 值的 nice 值,因此进程不需要知道它的起始 nice 值,它只关心它应该对系统更好(例如:一个进程启动一个子进程做一些后台处理,孩子把自己设置得很好)。

setpriority()用例是用户明确地为特定进程设置绝对好的值。

于 2011-10-01T10:24:10.180 回答