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

在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”。)

如果在unix下做这样的事情,你需要(以root身份)chmod你的任务并设置s位。 然后,您可以在运行时更改您的运行方式,优先级,线程安排等。

只要你没有编写一个大型的多线程应用程序,并且有一个bug,这样你就可以接管一个48个CPU的CPU,而且没有人可以关闭你,因为你的每个CPU都在100%旋转,所有的线程都被设置为SHED_FIFO运行完成)以root身份运行。

不,我不会从经验中发言….

@ allain

你可以降低自己的进程优先级,而不是超级用户?

当然。 但请注意,这是一条单行道。 你甚至不能回到你开始的地方。 即使相当小的优先级下降,当系统负载很重时,也会对运行时间产生巨大的影响。