文章目录
函数原型
ssize_t pread( int fd, void* buf, size_t count, off_t offset);
Retrns number of bytes read, 0 on EOF, or -1 on error
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
Returns number of bytes written, or -1 on error
功能
-
pread()调用等于将如下调用纳入同一原子操作:
off_t orig; orig = lseek(fd, 0, SEEK_CUR); s = read(fd, buf, len); lseek(fd, orig, SEEK_SET);
-
如果需要反复执行lseek(),并伴之以文件I/O,那么pread()和pwrite()调用在某些情况下是具有性能优势的。这是因为执行单个pread()(或pwrite())系统调用的成本要低于执行lseek()和read()(或write())两个系统调用 。
然而,较之于执行I/O实际所需的时间,系统调用的开小就有些相形见绌了。