success of lseek system call in c
关于lseek(C 系统调用)的一个小问题。我知道一旦失败,函数的返回值将是负数。我们能否确定如果返回值不是负数,函数实际上已移动到所需位置?
- 成功完成后,lseek() 返回从文件开头开始以字节为单位测量的结果偏移位置。否则,返回值 -1 并设置 errno 以指示错误。
-
如果一切都失败了,请阅读手册(或手册页)
-
一般来说,如果一个系统调用有办法报错,而它没有报错,那么它就是成功的。如果他们可以在不报告的情况下失败,那么几乎不可能编写可靠的代码。
-
您使用的是哪个操作系统/编译器。 lseek() 不在标准 C 库中。
-
@chux 我正在使用 gcc 编译器
如果值为(off_t)-1,则有错误。
如果值不是(off_t)-1,则调用成功。
来自我系统的手册页,
Upon successful completion, lseek() returns the resulting offset location as measured in bytes from the beginning of the file. On error, the value (off_t)-1 is returned and errno is set to indicate the error.
有人提到 off_t 必须是有符号类型,因此检查结果是负数还是非负数似乎是安全的。