2

当我的程序像进程一样运行时,我正在使用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 可以超过这些限制。我错过了什么吗?

4

1 回答 1

2

如果你在linux上,请检查是否

ulimit -e

返回0。这是在我的机器上设置的:

$ ulimit -e
...
scheduling priority             (-e) 0

这意味着,仅允许非 root 用户通过此限制减少 nice 值。/etc/security/limits.conf如果您具有 root 访问权限,您应该能够通过修改此限制。

这里有更多细节:http ://www.linuxjournal.com/article/3910

于 2014-06-06T20:03:12.413 回答