C语言 如果lseek()超出了文件的开头怎么办?



正如文档所强调的,lseek()函数允许将文件偏移量设置在文件末尾之外。但是如果我把它设置在文件开头之外呢?

让当前偏移量为5,当我尝试lseek(fd, 10, SEEK_END)时实际会发生什么?

如前所述,假设我创建了一个新文件,并调用函数write(fd, buf, 5)。当前文件偏移量为5。然后使用上面的lseek函数,我预计结果要么是0,要么可能发生一些错误。

假设您所询问的内容是否可以在文件开始之前寻求(您的代码示例不会这样做):

lseek()的规范说它将返回-1并将errno设置为EINVAL:

where参数不是一个正确的值,否则对于普通文件、块特殊文件或目录,结果文件偏移量将是负的。

最新更新