unix中nice和setpriority之间的区别

时间:2011-10-01 05:01:57

标签: c linux unix system-calls nice

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

3 个答案:

答案 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()用例是用户明确地为特定进程设置绝对好的值。