如果生成的文件偏移量对于常规文件为负,则该男子项目说lseek
应返回-1
。为什么lseek允许我设置负面文件位置?
为什么这样的代码工作?
int fd;
off_t offset;
fd = open("test.txt", O_RDWR);
offset = lseek(fd, -10, SEEK_SET);
printf("%d\n", offset); // prints -10
if (offset == (off_t) -1)
perror("seek"); // error not triggered
我觉得我应该得到offset=-1
和errno
设置为EINVAL
。
这也会导致文件大小显得非常大(接近无符号整数的大小) - 看起来像溢出问题。这是为什么?
可以将您的文件大小是报告中UINT32_MAX-1? –
至少在我的系统中'lseek(-10)'返回-1和“无效参数”。 –
你使用的是OS/compiler/stdlib? – SheetJS