如何获取pthread_setschedparam的权限 我需要在Angstrom Linux版本3.2.18上的BeaBeBeon上运行一个实时优先级的C++程序。程序调用pthread_setschedparam以尝试提升其优先级。以root用户身份登录时,出现“不允许操作”错误。但是,如果我首先在shell提示符下提升为超级用户“su”,那么对pthread_setschedparam的调用就成功了
如果不先运行“su”,如何才能获得相同的结果?我需要运行这个程序作为一个服务,在启动时自动启动 在for如何获取pthread_setschedparam的权限 我需要在Angstrom Linux版本3.2.18上的BeaBeBeon上运行一个实时优先级的C++程序。程序调用pthread_setschedparam以尝试提升其优先级。以root用户身份登录时,出现“不允许操作”错误。但是,如果我首先在shell提示符下提升为超级用户“su”,那么对pthread_setschedparam的调用就成功了,linux,real-time,beagleboard,Linux,Real Time,Beagleboard,如果不先运行“su”,如何才能获得相同的结果?我需要运行这个程序作为一个服务,在启动时自动启动 在forpthread_setschedparam(我想这就是你的意思)中,它在注释下声明: 有关更改线程的调度策略和优先级所需的权限和效果的说明,以及每个调度策略中优先级的允许范围的详细信息,请参阅sched_setscheduler(2) 在中,在特权和资源限制下详细说明: 在2.6.12之前的Linux内核中,只有特权(CAP_SYS_NICE)进程才能设置非零静态优先级(即设置实时调度策略)。
pthread_setschedparam
(我想这就是你的意思)中,它在注释下声明:
有关更改线程的调度策略和优先级所需的权限和效果的说明,以及每个调度策略中优先级的允许范围的详细信息,请参阅sched_setscheduler(2)
在中,在特权和资源限制下详细说明:
在2.6.12之前的Linux内核中,只有特权(CAP_SYS_NICE)进程才能设置非零静态优先级(即设置实时调度策略)。非特权进程可以进行的唯一更改是设置SCHED_OTHER策略,并且只有当SCHED_setscheduler()调用方的有效用户ID与正在更改策略的目标进程(即pid指定的进程)的真实或有效用户ID匹配时,才能进行此更改
自Linux2.6.12以来,RLIMIT_RTPRIO资源限制为SCHED_RR和SCHED_FIFO策略定义了非特权进程的静态优先级上限。更改调度策略和优先级的规则如下:
- 如果非特权进程具有非零RLIMIT_RTPRIO软限制,则它可以更改其调度策略和优先级,但必须遵守以下限制,即优先级不能设置为高于其当前优先级和RLIMIT_RTPRIO软限制的最大值
- 如果RLIMIT_RTPRIO软限制为0,则唯一允许的更改是降低优先级或切换到非实时策略
- 根据相同的规则,另一个非特权进程也可以进行这些更改,只要进行更改的进程的有效用户ID与目标进程的真实或有效用户ID匹配
- 特殊规则适用于SCHED_IDLE:在此策略下运行的非特权进程不能更改其策略,无论其RLIMIT_RTPRIO资源限制的值如何
pthread_setschedparam
中(我想这就是您的意思),它在注释下声明:
有关更改线程的调度策略和优先级所需的权限和效果的说明,以及每个调度策略中优先级的允许范围的详细信息,请参阅sched_setscheduler(2)
在中,在特权和资源限制下详细说明:
在2.6.12之前的Linux内核中,只有特权(CAP_SYS_NICE)进程才能设置非零静态优先级(即设置实时调度策略)。非特权进程可以进行的唯一更改是设置SCHED_OTHER策略,并且只有当SCHED_setscheduler()调用方的有效用户ID与正在更改策略的目标进程(即pid指定的进程)的真实或有效用户ID匹配时,才能进行此更改
自Linux2.6.12以来,RLIMIT_RTPRIO资源限制为SCHED_RR和SCHED_FIFO策略定义了非特权进程的静态优先级上限。更改调度策略和优先级的规则如下:
- 如果非特权进程具有非零RLIMIT_RTPRIO软限制,则它可以更改其调度策略和优先级,但必须遵守以下限制,即优先级不能设置为高于其当前优先级和RLIMIT_RTPRIO软限制的最大值
- 如果RLIMIT_RTPRIO软限制为0,则唯一允许的更改是降低优先级或切换到非实时策略
- 根据相同的规则,另一个非特权进程也可以进行这些更改,只要进行更改的进程的有效用户ID与目标进程的真实或有效用户ID匹配
- 特殊规则适用于SCHED_IDLE:在此策略下运行的非特权进程不能更改其策略,无论其RLIMIT_RTPRIO资源限制的值如何