【发布时间】:2023-03-28 20:34:01
【问题描述】:
我正在尝试读取一个大文件 (> 2.0 GB)。 查找是由 lseek64 完成的,然后我尝试使用 read(fileHandle, buffer, bufferLength)\ pread64(fileHandle, buffer, bufferLength, offset) 读取 - 但两者都返回 -1。
会是什么?
提前致谢!
【问题讨论】:
-
请提供更多上下文。文件有多大?你在哪里寻求?如果您寻求小偏移量,它会起作用吗?
-
能贴出相关的代码片段吗?否则很难调试...
-
该文件的大小为 2.39 GB,但其他大小相似的文件也会出现这种情况。 errno 的值为 EIO。
-
只剪切相关代码是相当困难的(这是库的一部分,功能更多......)但重要的部分:我在运行在虚拟机上的 Redhat 上运行它,并且该文件实际上在主机上(而不是在 RedHat VM 本身上)。谢谢大家!
-
至少在读取后放置一个 perror() 语句,这样可以更准确地解释它失败的原因。