为什么sched_setscheduler()
需要root priveledges?
我正在编写一些可以从设置SCHED_FIFO中获益的代码。但是,如果我使用sched_setscheduler(),我现在必须要求以root身份运行此过程。为什么不允许在没有root权限的情况下运行sched_setscheduler()
?
答案 0 :(得分:5)
大概是因为使用实时调度程序的进程可以完全接管一台机器,而不是让CPU进入其他进程 - 普通用户不应该有权这样做。
Linux允许您进行比以root身份运行更细粒度的控制,但您可以使用以下命令在可执行文件上设置CAP_SYS_NICE capability(以root用户身份完成一次):
setcap cap_sys_nice+ep ./your_program
即使它不以root用户身份运行,也允许您的可执行文件使用sched_setscheduler。
答案 1 :(得分:2)
因为它允许你的进程改变其他进程获得的CPU数量,这可能会被滥用。