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] [EOVERFLOW] [ESPIPE] 関連項目 |
バグ
このドキュメントの whence の使用法は正しくない英語ですが、歴史的な理由で 維持されています。 |
規格
lseek() システムコールは ISO/IEC 9945-1:1990 (‘‘POSIX.1’’) に適合していま す。 |
歴史
lseek() 関数は Version 7 AT&T UNIX で登場しました。 FreeBSD 10.0 April 19, 1994 FreeBSD 10.0 |