C:使用RLIMIT_FSIZE设置软限制的问题
我正在阅读有关getrlimt / setrlimit的手册页面,我正在按照相应的示例进行操作。
我试图设置“软”限制,但是当我设置软限制并将其打印出来时,它完全出错了。
示例:我将软限制设置为50,我得到软限制为219030298624.我将软限制设置为100,我得到软限制为42953954893824.我将软限制设置为100000,如下面的代码中所列,我得到与上述相同。
到底是怎么回事?
struct rlimit limit; getrlimit (RLIMIT_FSIZE, &limit); limit.rlim_cur = 100000; setrlimit (RLIMIT_FSIZE, &limit); struct rlimit rl; getrlimit (RLIMIT_CPU, &rl); rl.rlim_cur = 1; setrlimit (RLIMIT_CPU, &rl); printf("The soft limit is %llu\n", limit.rlim_cur);
setrlimit
不返回当前值。 您需要在设置值后调用getrlimit
以检索当前值。
struct rlimit rl; getrlimit (RLIMIT_CPU, &rl); rl.rlim_cur = 1; setrlimit (RLIMIT_CPU, &rl); getrlimit (RLIMIT_CPU, &rl); printf("The soft limit is %llu\n", rl.rlim_cur);
或者你可以使用prlimit
进行设置并获得一个电话http://linux.die.net/man/2/prlimit
%llu
不一定是%llu
的有效格式说明rlim_t
。 这是无意义的巨大价值观的源泉; 你通过将不匹配的类型传递给printf
来调用UB。 投long long
到long long
,印刷的价值应该是正确的。