0

我需要在 Windows 上移植一个应用程序。最初该应用程序是在 Linux 上编写的,它使用 Linux 特定的命令。我用sync() 堆在一个地方。Windows 没有这样的实用程序。代码看起来像

QSettings *data
...
data->setValue("some_var", var);
data->sync();
sync();

那是一个和平的 C++ 文件。我不懂C++。不是我写的。我使用其他语言。那么我怎样才能让它在 Windows 上工作,或者我怎样才能重写那部分呢?

4

2 回答 2

2

基本上你可以忽略系统特定的sync()调用。它不是必需的,即使在 linux 上也是如此。QSettings为您做正确的事。

于 2013-10-31T21:01:31.223 回答
1

如果您可以访问您打开的所有文件,我相信sync()在 Linux 上调用的等价物与在 Windows 上遍历所有文件句柄并刷新它们相同,可能是通过使用FlushFileBuffers()

编辑 1

如果您使用 C 文件接口(因为您来自 Linux),fflush()是您的朋友(您仍然需要访问所有打开的文件。)

编辑 2

我看到您可以使用_flushall()调用。不确定它与 Linux 的相似性,sync()但它们通常似乎做同样的事情。我对使用以下划线开头的函数也有点警惕。

于 2013-10-31T11:47:33.233 回答