3

我为我们公司的产品编写引擎,这些产品旨在在我们的客户信息亭上运行。这包括将文件写入磁盘的代码。

我们无法控制客户对硬件或操作系统的选择,并且我们第一次获得了可以使用的 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 被包含在内,或者是否有其他方法可以更改全局提交标志的状态?

4

2 回答 2

0

除了 C 文件接口暴露的问题之外,很可能还有其他问题。我正在考虑延迟写入的操作系统和文件系统决策以及 HDD 缓存,这可以解释您看到的行为。

除此之外,您应该能够始终commode.obj通过将库链接为 DLL 而不是静态库来简单地包含 。

于 2012-08-17T09:43:51.573 回答
0

我们还遇到了包含 commode.obj 对我们不起作用的问题。

fflush(...)我们没有使用,而是不使用_flushall()参数。

更多信息在他的存档知识库文章https://jeffpar.github.io/kbarchive/kb/066/Q66052/

于 2019-07-18T08:37:19.707 回答