簡體   English   中英

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

[英]How does QFileSystemWatcher determines if a file is modified?

我正在嘗試使用QFileSystemWatcher監視日志文件,但是每次修改日志文件時都不會始終發出fileChanged信號。 知道QFileSystemWatcher如何確定文件是否被修改(在Windows上)嗎?

QFileSystemWatcher'的性能完全取決於基礎平台所提供的功能。 通常,絕對不能保證如果一個進程正在寫入文件,則其他進程將立即看到這些更改。 QFileSystemWatcher的行為可能會通知您該事實。 日志寫入過程可能會選擇刷新文件。 取決於平台,刷新的語義可能是這樣的:當flush()返回時,保證其他進程能夠看到在flush()之前對該文件所做的更改。 如果是這樣,那么您希望QFileSystemWatcher通知您更改。

隨着平台獲得新功能, QFileSystemWatcher可能會滯后於新文件系統通知API的實現。 您需要閱讀其源代碼,以了解它是否支持您選擇的平台在這方面提供的所有功能。

您需要在打算支持的每個平台上限定QFileSystemWatcher的行為。 您可能會發現,在某些情況下,明確地定期輪詢文件信息可能會更好地工作-再次,應在逐平台的基礎上進行輪詢和QFileSystemWatcher的選擇,因為如果觀察者可以正常工作,則輪詢可能會產生不必要的開銷給定的平台。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM