开发者社区> 问答> 正文

linux 资源限制,软限制可以超出硬限制么?

while(f > oldlimit) {
            int decr_step = 16;

            limit.rlim_cur = f;
            limit.rlim_max = f;
            if (setrlimit(RLIMIT_NOFILE,&limit) != -1) break;
            setrlimit_error = errno;

            /* We failed to set file limit to 'f'. Try with a
             * smaller limit decrementing by a few FDs per iteration. */
            if (f < decr_step) break;
            f -= decr_step;
        }

网上说软限制不能超出硬限制,为什么不直接把软限制改成和硬限制一样大呢,如上代码(redis源码)还尝试什么?

展开
收起
a123456678 2016-06-17 17:30:17 1999 0
1 条回答
写回答
取消 提交回答
  • 我猜是因为 Redis 不想检查自己有没有更改 rlim_max 的权限,所以直接尝试好了。如果直接把软限制改成和硬限制一样大,那还要判断,如果 maxfiles > rlim_max,自己能不能把 rlim_max 改大,如果不能,再设置 rlim_cur 为 rlim_max。检查和设置之间还有竞态。

    2019-07-17 19:43:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
从 Linux 系统内核层面来解决实际问题的实战经验 立即下载
从Linux系统内核层面来解决实际问题的实战经验 立即下载
Decian GNU/Linux安全合规之路 立即下载