以下代码按预期写入文件
int ofd = open(filename.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0777);
google::protobuf::io::FileOutputStream outp(ofd);
google::protobuf::io::GzipOutputStream fout(&outp);
MyMessage msg;
ConstructMessage(&msg);
CHECK(google::protobuf::util::SerializeDelimitedToZeroCopyStream(msg, &fout));
fout.Close();
// close(ofd);
但是,如果我取消注释最后一行// close(ofd);
,我会得到空文件。这是为什么?
此外,如果我跳过使用 Gzip 包装器,最后一行不会出现问题。这看起来像一个错误吗?