1

off_t が表すことができるよりも多くのバイトをシークしようとすると、EOVERFLOW エラーが発生することに気付きました。off_t でより大きな数を求めるにはどうすればよいですか?

4

2 に答える 2

6

大きなファイルのサポートを有効にします。

LFS を使用するための簡単な説明では、次のいずれかを選択できます。

  • プログラムを " " でコンパイルしますgcc -D_FILE_OFFSET_BITS=64。これにより、すべてのファイル アクセス呼び出しで 64 ビット バリアントが使用されます。off_tとなるなど、いくつかのタイプも変化しoff64_tます。したがって、常に正しい型を使用し、int代わりに eg を使用しないことが重要ですoff_t。他のプラットフォームとの移植性のために、Linux プラットフォームgetconf LFS_CFLAGSでは返さ-D_FILE_OFFSET_BITS=64れるが、Solaris などでは別のものを返す可能性がある を使用する必要があります。リンクについては、 経由で報告されるリンク フラグを使用する必要がありますgetconf LFS_LDFLAGS。Linux システムでは、特別なリンク フラグは必要ありません。
  • とを定義_LARGEFILE_SOURCE_LARGEFILE64_SOURCEます。これらの定義を使用すると、open64 などの LFS 関数を直接使用できます。
  • 大きなファイルを操作するには、 O_LARGEFILEwith フラグを使用します。open
于 2012-07-01T23:56:22.880 に答える
0

http://www.kernel.org/doc/man-pages/online/pages/man3/lseek64.3.htmlを参照してください。

于 2012-07-02T00:03:22.070 に答える