QFileSystemWatcher如何确定文件是否被修改?

时间:2016-10-27 12:27:31

标签: qt

我正在尝试使用QFileSystemWatcher查看日志文件,但每次修改日志文件时都不会始终发出fileChanged信号。知道QFileSystemWatcher如何确定文件是否被修改(在Windows上)?

1 个答案:

答案 0 :(得分:2)

QFileSystemWatcher'的性能完全取决于底层平台提供的内容。通常绝对不能保证如果一个进程正在写入文件,其他一些进程将立即看到这些更改。 QFileSystemWatcher的行为可能会告诉您这一事实。日志写入过程可能会选择刷新文件。根据平台,刷新的语义可能是这样的,当flush()返回时,其他进程可以保证能够在flush()之前看到对文件所做的更改。如果是这样,那么您希望QFileSystemWatcher通知您更改。

随着平台获得新功能,QFileSystemWatcher可能会滞后于新文件系统通知API的实现。您需要阅读其来源,以确定它是否支持您所选择的平台在这方面提供的所有内容。

您需要在您打算支持的每个平台上限定QFileSystemWatcher的行为。您可能会发现,在某些情况下,定期轮询文件信息可能会更好 - 再次,轮询和QFileSystemWatcher之间的选择应该在逐个平台的基础上进行,因为轮询可能会产生不必要的开销,如果观察者在给定的平台上工作正常。

相关问题