Man page - pwrite(2)

Packages contains this manual

Available languages:

en fr es ja ru ro

Manual

PREAD

名 前
書 式
説 明
返 り 値
エ ラ ー
バ ー ジ ョ ン
準 拠
注 意
C ラ イ ブ ラ リ と カ ー ネ ル の 違 い
バ グ
関 連 項 目
こ の 文 書 に つ い て

名 前

pread, pwrite - 指 定 し た オ フ セ ッ ト で フ ァ イ ル デ ィ ス ク リ プ タ ー を 読 み 書 き す る

書 式

#include <unistd.h>

ssize_t pread(int fd , void * buf , size_t count , off_t offset );

ssize_t pwrite(int fd , const void * buf , size_t count , off_t offset );

glibc 向 け の 機 能 検 査 マ ク ロ の 要 件 ( feature_test_macros (7) 参 照 ):

pread (), pwrite ():

_XOPEN_SOURCE >= 500
|| /* glibc 2.12 以 降 : */ _POSIX_C_SOURCE >= 200809L

説 明

pread () は 、 フ ァ イ ル デ ィ ス ク リ プ タ ー fd の (フ ァ イ ル の 先 頭 か ら の ) オ フ セ ッ ト offset か ら 最 大 count バ イ ト を バ ッ フ ァ ー buf へ 読 み 込 む 。 フ ァ イ ル オ フ セ ッ ト は 変 化 し な い 。

pwrite () は 、 バ ッ フ ァ ー buf か ら 最 大 count バ イ ト を フ ァ イ ル デ ィ ス ク リ プ タ ー fd の オ フ セ ッ ト offset に 書 き 込 む 。 フ ァ イ ル オ フ セ ッ ト は 変 化 し な い 。

fd で 参 照 さ れ る フ ァ イ ル は シ ー ク (seek) 可 能 で な け れ ば な ら な い 。

返 り 値

On success, pread () returns the number of bytes read (a return of zero indicates end of file) and pwrite () returns the number of bytes written.

Note that it is not an error for a successful call to transfer fewer bytes than requested (see read (2) and write (2)).

エ ラ ー の 時 は -1 が 返 さ れ 、 errno に エ ラ ー の 原 因 を 示 す 値 が 設 定 さ れ る 。

エ ラ ー

pread () で は 、 read (2) お よ び lseek (2) で 規 定 さ れ た 全 て の エ ラ ー が 発 生 す る 可 能 性 が あ り 、 errno に は エ ラ ー を 示 す 値 が 設 定 さ れ る 。 pwrite () で は 、 write (2) お よ び lseek (2) で 規 定 さ れ た 全 て の エ ラ ー が 発 生 す る 可 能 性 が あ り 、 errno に は エ ラ ー を 示 す 値 が 設 定 さ れ る 。

バ ー ジ ョ ン

シ ス テ ム コ ー ル pread () と pwrite () は Linux に バ ー ジ ョ ン 2.1.60 で 追 加 さ れ た 。 i386 の シ ス テ ム コ ー ル の エ ン ト リ ー は 2.1.69 で 追 加 さ れ た 。 (シ ス テ ム コ ー ル を 持 た な い 古 い カ ー ネ ル で の lseek (2) を 使 っ た エ ミ ュ レ ー シ ョ ン を 含 め る と ) C ラ イ ブ ラ リ に お け る サ ポ ー ト は glibc 2.1 で 追 加 さ れ た 。

準 拠

POSIX.1-2001, POSIX.1-2008.

注 意

シ ス テ ム コ ー ル pread () と pwrite () は 、 特 に マ ル チ ス レ ッ ド ア プ リ ケ ー シ ョ ン で 役 に 立 つ 。 こ れ ら を 使 う と 、 他 の ス レ ッ ド に よ る フ ァ イ ル オ フ セ ッ ト の 変 更 の 影 響 を 受 け る こ と な く 、 複 数 の ス レ ッ ド が 同 じ フ ァ イ ル デ ィ ス ク リ プ タ ー に 対 し て 入 出 力 を 行 う こ と が で き る 。

C ラ イ ブ ラ リ と カ ー ネ ル の 違 い

Linux で は 、 裏 で 呼 び 出 さ れ る シ ス テ ム コ ー ル の 名 前 が カ ー ネ ル 2.6 で 変 更 さ れ た 。 pread () は pread64 () に な り 、 pwrite () は pwrite64 () に な っ た 。 シ ス テ ム コ ー ル の 番 号 は 変 更 さ れ て い な い 。 glibc の pread () と pwrite () の ラ ッ パ ー 関 数 は こ れ ら の 変 更 を 吸 収 し て い る 。

い く つ か の 32 ビ ッ ト ア ー キ テ ク チ ャ ー で は 、 こ れ ら の シ ス テ ム コ ー ル の 呼 び 出 し 時 の シ グ ネ チ ャ ー が 違 っ て い ま す 。 理 由 は syscall (2) で 説 明 さ れ て い る 通 り で す 。

バ グ

POSIX で は 、 O_APPEND フ ラ グ を 指 定 し て フ ァ イ ル を オ ー プ ン し た 場 合 、 pwrite () が デ ー タ を 書 き 込 む 位 置 に 影 響 を 及 ぼ さ な い こ と が 求 め ら れ て い る 。 し か し 、 Linux で は 、 フ ァ イ ル を O_APPEND 付 き で オ ー プ ン し た 場 合 、 offset の 値 に 関 わ ら ず 、 pwrite () は フ ァ イ ル の 末 尾 に デ ー タ を 追 記 す る 。

関 連 項 目

lseek (2), read (2), readv (2), write (2)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。