我有一个守护进程(obexpushd)在目录中写入一些文件。在我的Qt应用程序中,由于QFileSystemWatcher,我会在此目录中收听更改。然而,当obexpushd创建文件时,会发出directoryChanged信号,而不是在完成写入文件时发出。
所以,我要等obexpush在处理之前完成文件的编写。什么是最好的策略?
在固定的时间内检查尺寸是否保持不变? 以固定间隔呼叫lsof? 有更好的解决方案吗?
答案 0 :(得分:2)
obexpushd是一个可以改变的程序吗?如果是这样,最简单的事情可能是obexpushd写入临时文件,然后在写完文件时重命名。这将是你可以在你的Qt程序中监控的东西。更强大和更优雅的方式是与您的Qt程序进行obexpushd通信,可能通过dbus,明确说明何时完成。
如果obexpushd不在您的控制之下,那么您列出的策略之一可能是您最好的选择。
答案 1 :(得分:0)
您可以查看要更改的文件时间戳。 QFileInfo
使这成为可能。
答案 2 :(得分:0)
此问题http://bugreports.qt-project.org/browse/QTBUG-3576似乎存在漏洞。如果您知道正在等待的文件的文件名,也许您可以使用QFileSystemWatcher::fileChanged()
。