正如documentation突出显示的那样,lseek()
函数允许将文件偏移量设置在文件末尾之外,但是如果将其设置在文件开头之外呢?
假设当前偏移量为5,当我尝试lseek(fd, 10, SEEK_END)
时,实际上会发生什么?
如前所述,假设我创建了一个新文件,并调用函数write(fd, buf, 5)
。当前文件偏移量为5。然后使用上面的lseek函数,我预计结果将为0或可能发生一些错误。
正如documentation突出显示的那样,lseek()
函数允许将文件偏移量设置在文件末尾之外,但是如果将其设置在文件开头之外呢?
假设当前偏移量为5,当我尝试lseek(fd, 10, SEEK_END)
时,实际上会发生什么?
如前所述,假设我创建了一个新文件,并调用函数write(fd, buf, 5)
。当前文件偏移量为5。然后使用上面的lseek函数,我预计结果将为0或可能发生一些错误。
1条答案
按热度按时间lf5gs5x21#
假设您所询问的是是否可以在文件开头之前查找到(您的代码示例不会这样做):
specification for lseek()表示它将返回
-1
并将errno
设置为EINVAL
:whence参数不是正确的值,或者对于常规文件、块特殊文件或目录,生成的文件偏移量将为负。