指定したオフセットでファイルディスクリプターを読み書きするpread(2)/pwrite(2)を使ったサンプルコード
#include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/stat.h> #include <sys/types.h> #include <assert.h> int main(int argc, char **argv) { char c; int fd, ret; fd = open("test.txt", O_RDWR); assert(fd != -1); pread(fd, &c, sizeof(c), 5); printf("before pwrite():data is %c offset is %d\n", c, lseek(fd, 0, SEEK_CUR)); c = 'A'; ret = pwrite(fd, &c, sizeof(c), 5); assert(ret != -1); pread(fd, &c, sizeof(c), 5); printf("after pwrite():data is %c offset is %d\n", c, lseek(fd, 0, SEEK_CUR));}
pread() は、ファイルディスクリプター fd の (ファイルの先頭からの) オフセット offset から 最大 count バイトをバッファー buf へ読み込む。ファイルオフセットは変化しない。 pwrite() は、バッファー buf から最大 count バイトをファイルディスクリプター fd のオフセッ ト offset に書き込む。ファイルオフセットは変化しない。 fd で参照されるファイルはシーク (seek) 可能でなければならない。