lseek()
应该返回文件描述符的位置。
文档说:
成功完成后,lseek() 返回从文件开头开始以字节为单位测量的结果偏移位置。否则,返回值 -1 并设置 errno 以指示错误。
麻烦的是,即使这样也行不通:
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
printf("size off_t: %i\n", sizeof(off_t));
off_t pos;
pos = lseek(file, (off_t)0, SEEK_CUR);
printf("pos: %lli\n", pos);
// same result for SEEK_SET and SEEK_END
pos = lseek(file, (off_t)2352, SEEK_CUR);
printf("pos: %lli\n", pos);
这给了我:
尺寸off_t:8 位置:0 位置:0
为什么是这样?是否有使用原始 I/O 函数查找当前偏移量的替代方法?( read
, open
, lseek
, ...)
编辑1:
我试图让这个例子更简单。