【发布时间】:2019-04-17 18:43:15
【问题描述】:
假设我们有一个包含字符串“0123456789”的文件“x”。
我们打开文件,有一个文件描述符fd。
我们可以通过read(fd, some_buffer, 5) 将文件中的 5 个值读入缓冲区。
同样,我们可以使用 fseek 将指针移动到文件中的各个条目。
我的问题是,当我们使用带有正偏移量的 SEEK_END 时,fseek 的行为是什么?这种行为是未定义的,还是绕到文件内容的前面?
如果我们做fseek(fd, 5, SEEK_END),指针现在会指向哪里?
【问题讨论】:
-
就C规范而言,二进制文件不需要支持SEEK_END,文本文件也绝对不支持。有一件事是肯定的:带有正偏移量的 SEEK_END 不会环绕到文件的前面。它要么放大文件,要么失败。