Qt:等待另一个进程关闭文件

时间:2010-09-10 03:13:46

标签: qt file

我有一个守护进程(obexpushd)在目录中写入一些文件。在我的Qt应用程序中,由于QFileSystemWatcher,我会在此目录中收听更改。然而,当obexpushd创建文件时,会发出directoryChanged信号,而不是在完成写入文件时发出。

所以,我要等obexpush在处理之前完成文件的编写。什么是最好的策略?

在固定的时间内检查尺寸是否保持不变? 以固定间隔呼叫lsof? 有更好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

obexpushd是一个可以改变的程序吗?如果是这样,最简单的事情可能是obexpushd写入临时文件,然后在写完文件时重命名。这将是你可以在你的Qt程序中监控的东西。更强大和更优雅的方式是与您的Qt程序进行obexpushd通信,可能通过dbus,明确说明何时完成。

如果obexpushd不在您的控制之下,那么您列出的策略之一可能是您最好的选择。

答案 1 :(得分:0)

您可以查看要更改的文件时间戳。 QFileInfo使这成为可能。

答案 2 :(得分:0)

此问题http://bugreports.qt-project.org/browse/QTBUG-3576似乎存在漏洞。如果您知道正在等待的文件的文件名,也许您可​​以使用QFileSystemWatcher::fileChanged()