unix中nice和setpriority的区别

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

这是历史的。 nice()早在setpriority()之前被引入。 为了向后兼容, nice功能被保留了下来。

nice设置你自己的优先级(当前进程的好处)。 setpriority让您设置其他进程(或进程组或用户)的setpriority 。 把它想成renice

男人3p很好

int nice(int incr);

男人3p setpriority

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

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

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