5

典型的な OS では、標準の C ディスク IO を使用して一度にいくつのファイルを開くことができますか?

それを伝える定数を読み取ろうとしましたが、Windows XP 32 ビットではわずか 20 かそこらでした。30以上でも問題なく動作するように見えましたが、広範囲にテストしていません.

最大で一度に約 400 個のファイルを開く必要があるため、最新の OS のほとんどがそれをサポートしていれば、それは素晴らしいことです。XP をサポートする必要はありませんが、Linux、Win7、および最近のバージョンの Windows サーバーをサポートする必要があります。

別の方法は、可能であれば避けたい独自のミニファイルシステムを作成することです。

4

3 に答える 3

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);
于 2010-03-11T13:21:18.460 に答える
3

Linux では、これは利用可能なファイル記述子の量に依存します。を使用ulimit -nして、シェルごとに使用可能な FD の数を設定/表示できます。

Linux で使用可能な合計 FD:s の値を確認 (または変更) する方法については、次の手順を参照してください。

この IBM サポート記事では、Windows では番号が 512 であり、レジストリで変更できることが示唆されています (記事の指示に従って)。

Asopen()は fd as を返しますint- int のサイズも上限を制限します。 (INT_MAXが多いので関係ありません)

于 2010-03-11T13:18:56.190 に答える
1

参考までに、ルートとして、最初に/etc/security/limits.confの「nofile」項目を変更する必要があります 。例えば:

*                hard    nofile          10240
*                soft    nofile          10240

(limits.conf の変更は通常、ユーザーがログインしたときに有効になります)

その後、ユーザーはulimit -n bash コマンドを使用できます。Fedora 11 で最大 10,240 個のファイルでこれをテストしました。

ulimit -n <max_number_of_files>

最後に、これはすべて次のように与えられるカーネル制限によって制限されます。

cat /proc/sys/fs/file-max

また、http://www.karakas-online.de/forum/viewtopic.php?t=9834も参照してください。

于 2011-05-25T14:29:40.900 に答える