gpt4 book ai didi

c - 如何在 Mac OS X 上增加 C 中 "maximum open files"的限制

转载 作者:太空狗 更新时间:2023-10-29 17:18:10 26 4
gpt4 key购买 nike

Mac OS X 上最大打开文件的默认限制是 256 (ulimit -n),我的应用程序需要大约 400 个文件处理程序。

我尝试使用 setrlimit() 更改限制,但即使函数正确执行,我仍然限制为 256。

这是我使用的测试程序:

#include <stdio.h>
#include <sys/resource.h>

main()
{
struct rlimit rlp;

FILE *fp[10000];
int i;

getrlimit(RLIMIT_NOFILE, &rlp);
printf("before %d %d\n", rlp.rlim_cur, rlp.rlim_max);

rlp.rlim_cur = 10000;
setrlimit(RLIMIT_NOFILE, &rlp);

getrlimit(RLIMIT_NOFILE, &rlp);
printf("after %d %d\n", rlp.rlim_cur, rlp.rlim_max);

for(i=0;i<10000;i++) {
fp[i] = fopen("a.out", "r");
if(fp[i]==0) { printf("failed after %d\n", i); break; }
}

}

输出是:

before 256 -1
after 10000 -1
failed after 253

我不能要求使用我的应用程序的人深入/etc 文件或其他内容。我需要应用程序自行完成。

最佳答案

rlp.rlim_cur = 10000;

两件事。

第一。哈哈。显然您在 Mac OS X 的标准输入输出中发现了一个错误。如果我修复你的程序/添加错误处理/等等,并将 fopen() 替换为 open() 系统调用,我可以轻松达到 10000 的限制(比我的 10.6.3' OPEN_MAX 限制 10240 低 240 fds)

第二。 RTFM:man setrlimit。最大打开文件的情况必须针对 OPEN_MAX 进行专门处理。

关于c - 如何在 Mac OS X 上增加 C 中 "maximum open files"的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3166783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com