[英]Changing file descriptor limit in C (OSX)
我想增加我的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;
}
它打印日志:
4864, 9223372036854775807
19456, 9223372036854775807
Failed to set limit: Invalid argument
最大限制似乎有點太高了。 這是怎么回事?
來自man setrlimit:
setrlimit()現在返回,並且在歷史上成功的地方將errno設置為EINVAL。 ...使用“rlim_cur = min(OPEN_MAX,rlim_max)”。
OPEN_MAX在<sys / syslimits.h>中定義為10240
所以它未能將rlimit_cur設置為19456。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.