在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