cha*_*e55 3 c macos file-descriptor setrlimit
我想增加我的C程序可用的最大文件描述符数,该程序在OSX 10.7上运行.我已将以下代码添加到我的项目中,但它失败了!
struct rlimit limit;
if(getrlimit(RLIMIT_NOFILE, &limit))
{
perror("Failed to get limit");
return -1;
}
printf("%llu, %llu\n", limit.rlim_cur, limit.rlim_max);
limit.rlim_cur *= 4;
printf("%llu, %llu\n", limit.rlim_cur, limit.rlim_max);
if(setrlimit(RLIMIT_NOFILE, &limit))
{
perror("Failed to set limit");
return -1;
}
Run Code Online (Sandbox Code Playgroud)
它打印日志:
4864, 9223372036854775807
19456, 9223372036854775807
Failed to set limit: Invalid argument
Run Code Online (Sandbox Code Playgroud)
最大限制似乎有点太高了.这是怎么回事?
来自man setrlimit:
setrlimit()现在返回,并且在历史上成功的地方将errno设置为EINVAL....使用"rlim_cur = min(OPEN_MAX,rlim_max)".
OPEN_MAX 在<sys/syslimits.h>中定义为10240
所以它未能将rlimit_cur设置为19456.
| 归档时间: |
|
| 查看次数: |
1415 次 |
| 最近记录: |