为什么sched_setscheduler()
需要root权限?
我写了一些代码,从设置SCHED_FIFO中受益。 但是,如果我使用sched_setscheduler(),我现在必须要求以root身份运行此进程。 为什么不允许sched_setscheduler()
在没有root权限的情况下运行?
可能是因为使用实时调度程序的进程可以完全接管一台机器,而不会将CPU提供给其他进程 – 普通用户不应该有权力这样做。
Linux允许你做比按root运行更细粒度的控制,你可以使用以下命令在可执行文件上设置CAP_SYS_NICE 功能 (以root用户身份执行一次):
setcap cap_sys_nice+ep ./your_program
这将允许您的可执行文件使用sched_setscheduler,即使它不以root用户身份运行。
因为它允许你的进程改变其他进程得到多少CPU,这可以被滥用。