我正在尝试在C中实现unix的'nice'命令的不同风格。我已经看到了nice()系统调用和setpriority()调用的定义。 nice()调用仅增加/减少进程的优先级。如果我想将进程的优先级设置为特定值,我不能使用nice()调用吗?基本上,除了如何修改优先级之外,nice()和setpriority()之间有什么区别吗?
答案 0 :(得分:9)
这是历史性的。在nice()
之前很久就引入了setpriority()
。为了向后兼容,保留了nice
函数。
答案 1 :(得分:8)
nice
设置自己的优先级(当前进程的优点)。 setpriority
允许您设置其他进程(或进程组或用户)的好处。可以将其视为renice
。
man 3p nice
int nice(int incr);
man 3p setpriority
int setpriority(int which,id_t who,int value);
答案 2 :(得分:3)
nice()
修改当前进程相对于其当前nice值的nice值,因此该进程不需要知道它的起始nice值,它只关心它应该对系统更好(例如:一个进程启动一个进行一些后台处理的孩子,孩子将自己设置得很好。)
setpriority()
用例是用户明确地为特定进程设置绝对好的值。