[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:38476] Re: File size limit exceeded



会津の森と申します。

Fortran ユーザではないのですが...

高橋さん:
 >fotranのユーザープログラムで2GBを越えるファイル出力を行った
 >ところ,File size limit exceededで落ちてしまいました.

以下は、私のようなユーザーサイドから考えたときの意
見です。

物理的なファイルシステムが扱えるサイズは 2G 超を扱
えることが多いと思いますけど、32 bit 計算機が主流
である現状では、物理的なファイルシステムが 2Gbyte 
超を扱えたとしても、大抵の場合 2^31-1 (符号付き 32
bit 整数型の最大値)が最大バイトになるとみた方が安
全かもしれないと考えています。

C だと、lseek や fseek の offset を決める引数の型
は off_t で、実態は、符号付き 32 bit 整数(long)な
ので、最大値は 2^31-1 となりますよね。(この最大バ
イトだと、ext2 で1 ブロック 4096 バイトのとき、3
段間接アクセスは全く使われないのですが。。。)

実際,off_t とそれ以上のサイズを扱える loff_t に関して
/usr/include で
  grep off_t *.h
  grep loff_t *.h
を実行すると、前者はマッチしますが、後者は私の環境
では全くマッチしません。もっとも
  find . -name '*.h' | xargs grep 'loff_t'
はマッチしますが。

 _llseek を使えばどうにかなるかもしれませんが、使っ
たことはありませんので何とも言えませんが。

 >何かよい対応策をご存知の方がいましたら,ご教授ください.

ネガティブな意見を書いてすみません。肯定的な意見を
貰えると私も興味深いのですが。

森 和好