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 longlong long ,印刷的价值应该是正确的。