1

我很难理解为什么lseek函数有用。假设我从用户那里得到了这样的参数:

off_t offset = 10;

我想从偏移量中读取 100 个字节。我可以pread这样使用:

void * buf = malloc(100);
if (buf == NULL) { exit(1);}
int res = pread(file_id, buf, 100, offset);

另一方面,我知道我可以lseek这样设置文件:

off_t seek = lseek(file_id, offset, SEEK_SET);

所以我相信我pread已经实现了阅读。我错过lseek了什么可以帮助我阅读文件?

4

1 回答 1

1

函数可能必须在它不知道的位置(例如当前位置)读取/写入给定文件句柄,因此您需要将查找与读取(或写入)分离,因为调用者可能需要设置位置。

更一般地说,许多 I/O 只是顺序的,因此不需要寻找,而是pread强制寻找。

于 2017-06-07T04:56:14.257 回答