【问题标题】:Difference between nice and setpriority in unixunix 中 nice 和 setpriority 的区别
【发布时间】:2011-11-28 22:01:32
【问题描述】:

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

【问题讨论】:

    标签: c linux unix system-calls nice


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这是历史性的。 nice() 早在 setpriority() 之前就被引入了。为了向后兼容,保留了nice 函数。

      【讨论】:

      • 所以 setpriority 是 nice 的进步。谢谢,tat 清除了我的疑问。我想知道 nice 和 setpriority 所指的“优先级”是否不同(la脚,我知道 :))然后我' 将用 setpriority() 本身很好地实现。
      • @AswinParthasarathy 和dup2的历史差不多。在这两种情况下,人们都意识到需要更一般(或更具体)的行为,这就是为什么某些函数似乎具有重叠行为
      • @Aswin:其实还有其他优先级,通过sched_setscheduler()设置。
      【解决方案3】:

      nice 设置你自己的优先级(当前进程的好坏)。 setpriority 允许您设置其他进程(或进程组或用户)的友好度。把它想象成renice

      男人 3p 不错

      int nice(int incr);

      ma​​n 3p 设置优先级

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

      【讨论】:

      • 是的,但我可以用 setpriority 完成,就像我用 nice 完成的一样,对吧?
      • 是的,但是 nice only 影响当前进程,其中 setpriority 可以(可能)影响任何进程。这就是区别。
      • @Chris 问题似乎集中在为什么有人会在 setpriority/getpriority 可用于复制行为时使用 nice
      • 这个名字说明了一切——因为它很好 :D 但说真的,这只是为了方便。
      猜你喜欢
      • 2011-11-15
      • 1970-01-01
      • 2011-03-19
      • 2020-08-17
      • 2010-09-06
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多