Как правильно установить предел для приоритета процесса с libc?
Я использую setrlimit, чтобы ограничить привлекательность моей программы, когда она запускается как процесс, но она не работает.
int main()
{
struct rlimit limit;
getrlimit(RLIMIT_NICE, &limit);
limit.rlim_max = 30;
limit.rlim_cur = 15;
setrlimit(RLIMIT_NICE, &limit)
while(1)
sleep(1);
return 0;
}
Когда процесс запущен, учетная запись без полномочий root не может установить приоритет меньше 0, и root может превысить эти ограничения. Я что-то пропустил?
1 ответ
Решение
Если вы используете Linux, пожалуйста, проверьте, если
ulimit -e
возвращается 0
, Это установлено на моей машине:
$ ulimit -e
...
scheduling priority (-e) 0
это означает, что пользователям без полномочий root разрешено уменьшать значение nice только на это ограничение. Вы должны иметь возможность изменить этот лимит с помощью /etc/security/limits.conf
если у вас есть root-доступ.
вот еще некоторые подробности: http://www.linuxjournal.com/article/3910