2010-03-11 66 views
4

在典型的操作系統上,我可以使用標準C盤IO一次打開多少個文件?我可以同時打開多少個文件?

我試着讀一些應該告訴它的常量,但在Windows XP 32位上,這是一個可以忽略不計的事情。它似乎很好地工作超過30,但我還沒有廣泛的測試。

我需要大約400個文件一次打開max,所以如果大多數現代操作系統的支持,這將是非常棒的。它不需要支持XP,但應該支持Linux,Win7和最新版本的Windows服務器。

另一種方法是編寫我自己的迷你文件系統,我想盡可能避免。

回答

2

在Linux上,這取決於可用文件描述符的數量。 您可以使用ulimit -n設置/顯示每個外殼可用FD的數量。

查看這些instructions以瞭解如何檢查(或更改)Linux中可用總FD的值。

This IBM support article表明,Windows上的號碼是512,你可以在註冊表中更改(如文章中的說明)

作爲 open()返回的fd爲 int - 的INT極限尺寸也上限制。 (與INT_MAX不相關很多)

3

進程可以使用getrlimit系統調用來查詢限制。

#include<sys/resource.h> 
struct rlimit rlim; 
getrlimit(RLIMIT_NOFILE, &rlim); 
printf("Max number of open files: %d\n", rlim.rlim_cur-1); 
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

相關問題