2010-06-16 70 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

相关问题