68user's page 掲示板

Prev< No. 4104> Next  [最新発言に戻る] [過去ログ一覧]
No. 4104 # 68user 2005/02/21 (月) 23:44:19
質問は受け付けないって書いてあるのに、変わった人たちですね。
まぁいいですけど。

> Q1.FOPEN_MAXの20と言うのは何に利用されているかご存知ですか?
Solaris8 の stdio(3) には以下のように記述されています。
      The integer constant FOPEN_MAX specifies the minimum number
      of files that the implementation guarantees can be open
      simultaneously.

JIS X 3010 (C99 相当) には以下のように記述されています。
      FOPEN_MAX は、同時にオープンできることを処理系が保証するファイル
      数の最小値をあらわす整数定数式に展開する。

なお、FOPEN_MAX は最大値ではなく最小値です。「少なくともこれだけは
オープンできる」という値です。


FOPEN_MAX が具体的にどう使われているか、という話であれば、処理系
依存です。たとえば FreeBSD であれば libc において
      static FILE usual[FOPEN_MAX - 3];
などと使われており、リソースを確保しなおすことなくオープンできる
ファイル数が FOPEN_MAX である、という形になっているようです。

Linux などで使われている glibc においては FOPEN_MAX を一切使用して
おらず、意味のない値になっています。Solaris はソースを持ってないので
知りません。

> Q2.コンパイラごとに異なるものなのでしょうか?OSやCで決まる
> ものなのでしょうか?
何がですか? FOPEN_MAX が?

> Q3.漠然とした質問で申し訳無いのですが、上記の様なファイルオープン数の
> メーカーからの保障について、どなたかご存知ですか?
「保証する値」にこだわるのであれば、メーカーに問い合わせるのが
一番かと思います。

Prev< No. 4104> Next  [最新発言に戻る] [過去ログ一覧]