はじめまして、高島屋です。 solarisでC言語にてアプリケーションを作成する際の、1プロセスが可能なファイルオープンのMAX値について教えていただけないでしょうか? 実際にopen可能な、、と言う意味ではなく、「メーカで保障されている」MAX値を調査しています。 利用しているコンパイラは「SunOneStudio8」。 まず、当方で調査した結果を報告致します。 ・ANSI規格の規格では8以上とされている。(「新ANSIC言語辞典」技術評論社→コンパイラに対して8以上を保障しなさいと言う意味だと思います) ただし、/usr/include/isostdio_iso.hでは、FOPEN_MAX=20と設定されている。(CPU=SPARK) ・solris limit,sysdefコマンドで確認した所、 limitコマンドでのファイル記述子の最大数は256。 sysdefコマンドのfile descriptorsに関する、"process Resource Limit"の値も共に256。 実際に1プロセスで256ファイル以上をオープンすると、それ以降のファイルオープンが失敗しました。 ・その他 システム全体で同時open可能なファイルの最大数があるのかは不明(調査不足) なお、sysdefコマンドで確認した所、maximum number of process = 30000 maximum processes per user id = 29995の制限値が設定されていました。 ただ、上記はあくまで、実際に設定されている値で、それぞれのメーカーが保障している値ではありません。 SunOneのマニュアルからも最大値の記述は読み取れませんでした。(調査不足?) Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?CPUにより異なる様なのですが。。 プロセスを最大数立ち上げた際にオープン出来るファイルの最大数と言う事なのしょうか? Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まるものなのでしょうか? 何を基準に(c?solaris?コンパイラ?)マックス値を調査すればよいのでしょう? Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数のメーカーからの保障について、どなたかご存知ですか? 以上、拙文で申し訳ないのですが、ご存知の方ご教授下さい。 |