【发布时间】:2021-05-26 14:45:37
【问题描述】:
在windows下使用mingw,下面在linux下运行的代码不起作用:
int fh = open(filename, O_RDONLY);
const int size=100000;
int bytesRead = read(fh, buffer, size);
文件大于 100k,但读取的字节数仅为 232。我认为这与 windows 中的二进制文件有关?
这个带有 ifstream 的代码可以在 windows 和 Linux 中运行。
ifstream in(filename, ios::binary);
const int size=100000;
in.read(buffer, size);
有没有办法让 2 级 IO 调用也可以在 Windows 上工作?
【问题讨论】:
-
你试过
O_RDONLY | O_BINARY吗?我怀疑二进制文件的字节 232 被错误地检测为文件结尾(在 Windows 中)。我在这里和那里看到过O_BINARY,但找不到像“权威”文档这样的东西。 -
我通常google man open,没有意识到兼容性功能不兼容。您在哪里可以找到文档?
标签: c++ file mingw binaryfiles