Как правильно установить предел для приоритета процесса с 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

Другие вопросы по тегам