簡體   English   中英

在C(OSX)中更改文件描述符限制

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM