質問

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

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

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

別の方法は、独自のミニ ファイル システムを作成することですが、できれば避けたいと考えています。

役に立ちましたか?

解決

Linuxでは、これは、利用可能なファイルディスクリプタの量に依存しています。 使用可能なFDのシェルあたりの数を表示/設定するulimit -nを使用することができます。

これらの命令がチェック(または変更する方法にを参照してください。 )利用可能な総FDの値:LinuxでS

このIBMサポート記事には示唆そのWindows上の数は512で、レジストリで変更することができます(記事の指示通り)

<ストライキ> int型にも制限上限の大きさ - open()intとしてFDを返すように。 (INT_MAXがたくさんあるように無関係な)

他のヒント

プロセスははgetrlimitシステム・コールを使用して制限を照会することができます。

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

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

*                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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top