lseek(2) FreeBSD 一般コマンドマニュアル

lseek

前のページ 上に戻る 次のページ

lseek




書式

     #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 がオープンファイル記述子ではありません。

     [ESPIPE]           fildes はパイプ、ソケット、または FIFO と対応づけられ
                        ています。

     [EINVAL]           whence が適切な値ではありません。


関連項目

     dup(2), open(2)


バグ

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


ABELNET VPSサービス