有人可以向我解释该程序的作用吗?我听不懂我创建了一个名为“ FILE”的文件,并在上面写了五个字母的单词。现在,该程序做什么?我不明白偏移量是什么...请向我解释,我知道这是简单的概念,但我似乎无法理解...谢谢。
#include <sys/types.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <unistd.h>
int main(void)
{
int fd,i;
fd=open("FILE",O_RDONLY);
i=lseek(fd,50,SEEK_CUR);
exit(0);
}
答案 0 :(得分:2)
通常,查找此类问题答案的最佳位置是手册页。在大多数Linux / BSD / etc上。系统,只需键入man lseek
(或您感兴趣的任何功能)即可找到它们。
在这种情况下,手册页将说明offset
是要查找的字节数。确切的含义取决于whence
参数,但这是每个参数的含义(从手册页中复制):
SEEK_SET
The file offset is set to offset bytes.
SEEK_CUR
The file offset is set to its current location plus offset bytes.
SEEK_END
The file offset is set to the size of the file plus offset bytes.
因此,如果您输入五个字母的单词,请说“你好”,然后执行lseek(fd, 2, SEEK_SET)
,光标将位于第一个'l'之前,如果您的read()
其余的文件,您将以“ llo”结尾。或者,如果您write()
到文件,最终将覆盖“ llo”,但前两个字节将保持不变。
答案 1 :(得分:1)
程序以只读模式打开一个名为FILE的文件。然后代码将文件偏移量(当前读取位置)移至0f文件加上50个字节的起始位置。我认为混乱是因为我现在指向文件的末尾并且文件大小没有改变?这是预期的行为。有关更多信息,请参见http://man7.org/linux/man-pages/man2/lseek.2.html