我很难理解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,我想念什么来帮助我阅读文件?

最佳答案

一个函数可能必须在一个未知的位置(例如当前位置)从给定的文件句柄读取/写入该文件句柄,因此您需要将搜索与读取(或写入)的操作脱钩,因为调用者可能需要设置位置。

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

10-01 17:02