在C中更改当前进程的优先级

时间:2020-03-05 18:43:40  来源:igfitidea点击:

在Windows上,我可以执行以下操作:

HANDLE hCurrentProcess = GetCurrentProcess();

SetPriorityClass(hCurrentProcess, ABOVE_NORMAL_PRIORITY_CLASS);

我如何在* nix上做同样的事情?

解决方案

回答

尝试:

#include <sys/time.h>
#include <sys/resource.h>

int main(){
    setpriority(PRIO_PROCESS, 0, -20);
}

请注意,我们必须以超级用户身份运行才能正常工作。

(有关更多信息,请在提示符下键入" man setpriority"。)

回答

@阿兰

Can you lower your own process' priority without being superuser?

当然。但是请注意,这是一条单向街。我们甚至无法回到起点。当系统负载很大时,即使是很小的优先级降低也会对运行时间产生惊人的巨大影响。

回答

如果要在Unix下做这样的事情,我们想(以root身份)使用chmod,我们需要设置并设置s位。然后,我们可以在运行时更改谁的运行身份,优先级,线程调度等。

只要我们不编写包含错误的大型多线程应用程序,这样我们就可以接管48个CPU的盒子,而没有人可以关闭我们,因为每个CPU都以100%的速度旋转,并且所有线程都设置为SHED_FIFO(以root身份运行)。

罗..我不会从经验中讲..