tail head cat sleep
QR code linking to this page

manページ  — LSEEK

名称

lseek – 読取り / 書込みファイルオフセット位置を変更する

内容

ライブラリ

Standard C Library (libc, -lc)

書式

#include <unistd.h>

off_t
lseek(int fildes, off_t offset, int whence);

解説

lseek() システムコールは、ディレクティブ whence に従ってファイル記述子 fildes のオフセットを引数 offset に移動します。 引数 fildes はオープンファイル記述子でなければなりません。 lseek() システムコールは、次のようにファイル記述子 fildes に対応するファイル位置ポインタを移動します:
whence SEEK_SET の場合、オフセットは offset バイトに設定されます。
whence SEEK_CUR の場合、オフセットは現在の位置に offset バイトを加算したものに設定されます。
whence SEEK_END の場合、オフセットはファイルのサイズに offset バイトを加算したものになります。

lseek() システムコールによって、ファイルオフセットをファイルの既存のファイルの 終り (EOF) を越えるところに設定できます。 後にデータがこの点に書き込まれると、 それ以後のギャップ内のデータに対する読取りは (データが実際にギャップ内に書き込まれるまで) データとして 0 を返します。

シークできないデバイスもあります。 そのようなデバイスに対応するポインタの値は未定義になります。

戻り値

処理が正常に完了すると lseek() は、ファイルの先頭から測定した結果のオフセット位置をバイト単位で返します。 そうでない場合は -1 が返され、エラーを示すために errno が設定されます。

エラー

lseek() システムコールは次の場合に処理を失敗し、ファイル位置ポインタは変更されません:
[EBADF]
  fildes 引数がオープンファイル記述子ではありません。
[EINVAL]
  whence 引数が正しい値ではないか、計算結果のファイルオフセットが キャラクタ型ではない特殊ファイルに使う負の値となりました。
[EOVERFLOW]
  計算結果のファイルオフセットが、 off_t 型のオブジェクトでは正しく表現できない値となりました。
[ESPIPE]
  fildes 引数はパイプ、ソケット、または FIFO と対応づけられています。

関連項目

dup(2), open(2)

バグ

このドキュメントの whence の使用法は正しくない英語ですが、歴史的な理由で維持されています。

規格

lseek() システムコールは IEEE Std 1003.1-90 ("POSIX.1") に適合しています。

歴史

lseek() 関数は AT&T v7 で登場しました。

LSEEK (2) April 19, 1994

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

As soon as we started programming, we found to our surprise that it wasn't as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs.
— Maurice Wilkes