C语言 如果lseek()传递到文件开头之外会怎么样?

wnvonmuf  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(134)

正如documentation突出显示的那样,lseek()函数允许将文件偏移量设置在文件末尾之外,但是如果将其设置在文件开头之外呢?
假设当前偏移量为5,当我尝试lseek(fd, 10, SEEK_END)时,实际上会发生什么?
如前所述,假设我创建了一个新文件,并调用函数write(fd, buf, 5)。当前文件偏移量为5。然后使用上面的lseek函数,我预计结果将为0或可能发生一些错误。

lf5gs5x2

lf5gs5x21#

假设您所询问的是是否可以在文件开头之前查找到(您的代码示例不会这样做):
specification for lseek()表示它将返回-1并将errno设置为EINVAL
whence参数不是正确的值,或者对于常规文件、块特殊文件或目录,生成的文件偏移量将为负。

相关问题