2G超えのファイル

2G を超えるファイルを扱うには、filesystemと program の両方が対応している必要がある。program の対応とは Linux の場合 lseek() の off_t = long = signed 32bit なので、普通では 2G が限界なのだ。なので lseek64 と off64_t を使う必要があるようだ。

FreeBSD の off_t は 64bitらしいが、そうすると off_t = long でなくなるので、過去のプログラムを結構修正しないといけないのではないだろうか。昔触っていた Alpha Linux だと off_t = long = signed 64bit だったのだが、こっちは (int = 32bit) != (long = 64bit) だったので、それはそれで大変であった。