我为我们公司的产品编写引擎,这些产品旨在运行在我们的客户服务亭上。这包括将文件写入磁盘的代码。
我们无法控制客户端的硬件或操作系统选择,这是我们第一次使用Windows 7 Embedded。突然之间,如果在冲洗后立即断电,我们的安全写入已经开始失败。
尽管包含commode.obj导致fflush提交,即使在Win7上,我也总是喜欢在Windows上使用特定于MS的提交模式标志(“c”)(Linux版本使用完全不同的方法),因为当我编写库而不是产品时,我永远不能确定commode.obj实际上已被包含在内,所以我不能抛出错误。
FILE* p_f = fopen("foo.dat", "wbc");
fwrite(p_important_stuff, 1, size, p_f);
fflush(p_f);
所以我的问题是:Win7上的提交模式标志是否已损坏,如果是这样,我可以保证包含commode.obj,或者是否有其他方式我可以更改全局提交标志的状态?
答案 0 :(得分:0)
除了C文件接口公开的问题之外,很可能还有其他问题。我正在考虑操作系统和文件系统决策来延迟写入和HDD缓存,这可以解释你看到的行为。
除此之外,您应该只需将您的库链接为DLL而不是静态库,就可以始终包含commode.obj
。
答案 1 :(得分:0)
在添加commode.obj时,我们也遇到了问题。
我们使用lwr
而不使用fflush(...)
,而没有参数。