在Mac OS X中的最大打开的文件的缺省限制是256(的ulimit -n)和我的应用程序需要大约400文件处理程序。如何增加的“最大打开文件”限用C在Mac OS X
我试图改变通过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文件或其他东西里面戳。我需要应用程序自行完成。
为什么需要同时打开这么多文件? – sbooth 2010-07-02 15:19:19
不是说它应该重要,而是在服务器版或OSX的桌面版上测试它吗?我可以想象,苹果人决定限制桌面应用可以打开多少个文件,因为打开许多文件通常是面向服务器的任务... – 2010-07-02 22:12:24