スポンサーリンク

LSEEK(2) FreeBSD システムコールマニュアル LSEEK(2)

名称

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

ライブラリ

標準 C ライブラリ (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() システムコールは ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合していま す。

歴史

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

FreeBSD 10.0 April 19, 1994 FreeBSD 10.0

スポンサーリンク