2010-06-16 89 views
3

我從fsevent的目錄路徑,如「/用戶/數據/」 但我真正想要的是「/User/Data/change.txt」 我看了節目指南,它說我可以知道哪個文件使用fsevent進行了更改嗎?

typedef void (*FSEventStreamCallback)(
    ConstFSEventStreamRef streamRef, 
    void *clientCallBackInfo, 
    size_t numEvents, 
    void *eventPaths, 
    const FSEventStreamEventFlags eventFlags[], 
    const FSEventStreamEventId eventIds[]); 

eventPaths到達 目錄的路徑數組,其中發生事件 。

是否有任何方法來找出哪個文件被改變? 謝謝!!!! 我堅持了這麼久..

回答

5

另一種方法是kqueue。請參閱「文件系統事件編程指南」的附錄A.

+0

謝謝!這真的很有幫助。 – Frost 2010-06-16 18:05:56

+0

僅當您想要查看數量非常有限的文件時才使用kqueue。 – 2013-03-23 15:22:49

3

根據您的使用需求,您可能會考慮低級別的fsevents。該進程必須以root用戶身份運行。這是一個simple example讀取從/dev/fsevents而不是使用FSEvents包裝。有了這個,您將獲得完整的路徑以及進行更改和其他細節的過程。

+0

fslogger似乎只工作到snowleopard。當它嘗試使用ioctl克隆/ dev/fsevents時,ioctl返回錯誤數量:14(Bad Address)。任何想法如何解決它..? – 2012-09-21 13:48:19

1

在10.7+中,您可以將kFSEventStreamCreateFlagFileEvents標誌傳遞給FSEventStreamCreate以獲取單個文件信息。見documentation

相關問題