我正在使用内核2.6.37.1-1.2在opensuse 11.4上编写一个带有c ++和NetBeans的应用程序 (以root身份登录)。此应用程序创建一个线程,并在运行时给出以下结果:
sched_param param;
param.__sched_priority = -1;
policy = SCHED_FIFO;
param.__sched_priority = 50;
result = pthread_setschedparam(m_thread,policy,¶m);
result = 1(EPERM (not permitted))
为什么?
答案 0 :(得分:2)
非特权进程无法设置实时 优先级高于其RLIMIT_RTPRIO设置。你可以改变这个 在
rtprio
中添加“/etc/security/limits.conf
”条目(设置为 在登录时应用,因此更改不会影响现有登录会话。)权限由
CAP_SYS_NICE
功能决定。
这样的东西应该放在配置文件中:
domain type item value
@group soft rtprio 100
给定组的软rtprio限制为100。 假设您的PAM配置使用pam_limits。
,这将有效您可能还必须确定硬限制:
@group hard rtprio 100