如果生成的文件偏移量對於常規文件爲負,則該男子項目說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