C 调用lseek64-Linux后读取文件
我正在尝试读取一个大文件(>2.0 GB)。 查找由lseek64完成,然后我尝试使用read(fileHandle,buffer,bufferLength)\pread64(fileHandle,buffer,bufferLength,offset)进行读取,但两者都返回-1 可能是什么 提前谢谢 你有吗C 调用lseek64-Linux后读取文件,c,linux,file,C,Linux,File,我正在尝试读取一个大文件(>2.0 GB)。 查找由lseek64完成,然后我尝试使用read(fileHandle,buffer,bufferLength)\pread64(fileHandle,buffer,bufferLength,offset)进行读取,但两者都返回-1 可能是什么 提前谢谢 你有吗 ssize_t count = read(fileHandle, buffer, bufferLength); if ( count == -1 ) { fprintf(stderr, "
ssize_t count = read(fileHandle, buffer, bufferLength);
if ( count == -1 )
{
fprintf(stderr, "can't read file: %m\n");
exit(1);
}
#define _FILE_OFFSET_BITS 64
在包含系统调用头之前?否则,请显示一些代码。您有吗
#define _FILE_OFFSET_BITS 64
在包含系统调用头之前?否则,请显示一些代码。请提供更多上下文。档案有多大?你想去哪里?如果你寻求小的偏移量,它能工作吗?你能发布相关的代码片段吗?除此之外,调试此文件非常困难…文件大小为2.39 GB,但其他大小类似的文件也会出现这种情况。errno的值是EIO。很难只剪切相关代码(这是一个库的一部分,做的更多…),但这是一个重要的部分:我在运行在虚拟机上的Redhat上运行它,文件实际上在主机上(而不是Redhat VM本身)。谢谢大家!!至少在读后放一个perror()语句,这将更准确地解释它失败的原因。请提供更多上下文。档案有多大?你想去哪里?如果你寻求小的偏移量,它能工作吗?你能发布相关的代码片段吗?除此之外,调试此文件非常困难…文件大小为2.39 GB,但其他大小类似的文件也会出现这种情况。errno的值是EIO。很难只剪切相关代码(这是一个库的一部分,做的更多…),但这是一个重要的部分:我在运行在虚拟机上的Redhat上运行它,文件实际上在主机上(而不是Redhat VM本身)。谢谢大家!!至少在读取之后放一个perror()语句,这将更精确地解释它失败的原因。