我目前正在用C ++编写插件。对于我的功能,我要求API保存文件。当文件被写入时,API给我一个返回值......或者看起来如此。问题是,这个返回值太早返回,因此我无法确定文件是否完全写入。
是否有可能独立于api来检查文件的写入完整性?
答案 0 :(得分:4)
这是因为系统在请求后不会立即将数据写入磁盘,但仍会返回。在C中,您可以使用int fflush (FILE *stream)
,但我不知道您是如何在C ++中那样做的。
答案 1 :(得分:1)
不是真的,即使我们重新读取文件,“验证”写入已经发生,你仍然可以查看内核缓冲区。
答案 2 :(得分:0)
您可以将原始缓冲区和您编写的文件与byte for byte进行比较,但我认为最好使用相应的fflush
和fclose
操作来信任您的操作系统。
答案 3 :(得分:0)
如前所述,您可以使用fflush()。您可以根据您是使用流类还是描述符来调用sync()/ fsync()。