在典型的操作系統上,我可以使用標準C盤IO一次打開多少個文件?我可以同時打開多少個文件?
我試着讀一些應該告訴它的常量,但在Windows XP 32位上,這是一個可以忽略不計的事情。它似乎很好地工作超過30,但我還沒有廣泛的測試。
我需要大約400個文件一次打開max,所以如果大多數現代操作系統的支持,這將是非常棒的。它不需要支持XP,但應該支持Linux,Win7和最新版本的Windows服務器。
另一種方法是編寫我自己的迷你文件系統,我想盡可能避免。
在典型的操作系統上,我可以使用標準C盤IO一次打開多少個文件?我可以同時打開多少個文件?
我試着讀一些應該告訴它的常量,但在Windows XP 32位上,這是一個可以忽略不計的事情。它似乎很好地工作超過30,但我還沒有廣泛的測試。
我需要大約400個文件一次打開max,所以如果大多數現代操作系統的支持,這將是非常棒的。它不需要支持XP,但應該支持Linux,Win7和最新版本的Windows服務器。
另一種方法是編寫我自己的迷你文件系統,我想盡可能避免。
在Linux上,這取決於可用文件描述符的數量。 您可以使用ulimit -n
設置/顯示每個外殼可用FD的數量。
查看這些instructions以瞭解如何檢查(或更改)Linux中可用總FD的值。
This IBM support article表明,Windows上的號碼是512,你可以在註冊表中更改(如文章中的說明)
作爲
(與INT_MAX不相關很多)open()
返回的fd爲
int
- 的INT極限尺寸也上限制。
進程可以使用getrlimit系統調用來查詢限制。
#include<sys/resource.h>
struct rlimit rlim;
getrlimit(RLIMIT_NOFILE, &rlim);
printf("Max number of open files: %d\n", rlim.rlim_cur-1);
僅供參考,以根用戶身份,你必須先修改 'NOFILE' 項/etc/security/limits.conf文件。例如:
* hard nofile 10240
* soft nofile 10240
然後(limits.conf中的變化在用戶登錄時在通常生效),用戶可以使用的ulimit -n bash命令。 (我想你可以迴應一個值這會更高:我已經與多達10,240文件在Fedora 11
ulimit -n <max_number_of_files>
最後測試了,這一切都是由內核的限制,由下式給出的限制。 ..風險自負)
cat /proc/sys/fs/file-max
而且,看到http://www.karakas-online.de/forum/viewtopic.php?t=9834