LSEEK(2) — NEWS-OS Programmer’s Manual
名称
lseek − 読み取り/書き込みポインタを移動する
形式
#include <sys/types.h>
#include <sys/file.h>
#define L_SET0/∗ set the seek pointer ∗/
#define L_INCR1/∗ increment the seek pointer ∗/
#define L_XTND2/∗ extend the file size ∗/
pos = lseek(d, offset, whence)
off_t pos;
int d;
off_t offset;
int whence;
解説
ディスクリプタ d は、 読み取りおよび/または書き込みのためにオープンされている ファイルまたはデバイスを指します。 lseek は、 d のファイルポインタを 次のようにセットします。
whence が L_SET である場合には、 ポインタは、先頭から offset バイトにセットされます。
whence が L_INCR である場合には、 ポインタは、 その現在の位置に offset を プラスした値にセットされます。
whence が L_XTND である場合には、 ポインタは、 そのファイルの最後に offset を プラスした値にセットされます。
コールが正常に終了すると、 ファイルの先頭からバイト単位で測られた、 結果のポインタ位置が返されます。 シーキングのできないデバイスもあります。 そのようなデバイスに対するポインタの値は、 不定になります。
注意事項
ファイルの終りを 越えたシーキングのあとに書き込みを 行うと、 ギャップ、 すなわち “ホール” が作られます。 このホールは、 物理的スペースを 占めるものではなく、 複数のゼロとして解釈します。
リターン値
正常終了時には、 現在のファイルポインタの値が返されます。 そうでない場合には、 値 −1 が返され、 errno がエラーを 示すようにセットされます。
エラー
次の場合には、 lseek は失敗し、 ファイルポインタの値は変更されません。
[EBADF] d がオープンされているファイルのディスクリプタではない。
[ESPIPE] d がパイプまたはソケットを示している。
[EINVAL] whence が適切な値ではない。
関連事項
バグ
このドキュメントにおける whence の使い方は、 正しい英語ではありませんが、 当初から使用されてきたものなので、 現在でもそのまま使用しています。
NEWS-OSRelease 4.2.1R