0
点赞
收藏
分享

微信扫一扫

1.在文件特定偏移量处的I/O:pread()和pwrite()

卿卿如梦 2022-01-08 阅读 50

文章目录

函数原型

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

功能

  1. pread()调用等于将如下调用纳入同一原子操作

    off_t orig;
    orig = lseek(fd, 0, SEEK_CUR);
    s = read(fd, buf, len);
    lseek(fd, orig, SEEK_SET);
    
  2. 如果需要反复执行lseek(),并伴之以文件I/O,那么pread()和pwrite()调用在某些情况下是具有性能优势的。这是因为执行单个pread()(或pwrite())系统调用的成本要低于执行lseek()和read()(或write())两个系统调用 。

然而,较之于执行I/O实际所需的时间,系统调用的开小就有些相形见绌了。

举报

相关推荐

0 条评论