Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lseek(2) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

dup(2)

open(2)

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 が適切な値ではない。

関連事項

dup(2), open(2)

バグ

このドキュメントにおける whence の使い方は、 正しい英語ではありませんが、 当初から使用されてきたものなので、 現在でもそのまま使用しています。

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026