正如文档所强调的,lseek()
函数允许将文件偏移量设置在文件末尾之外。但是如果我把它设置在文件开头之外呢?
让当前偏移量为5,当我尝试lseek(fd, 10, SEEK_END)
时实际会发生什么?
write(fd, buf, 5)
。当前文件偏移量为5。然后使用上面的lseek函数,我预计结果要么是0,要么可能发生一些错误。
假设您所询问的内容是否可以在文件开始之前寻求(您的代码示例不会这样做):
lseek()的规范说它将返回-1
并将errno
设置为EINVAL
:
where参数不是一个正确的值,否则对于普通文件、块特殊文件或目录,结果文件偏移量将是负的。