我正在构建一个等效的OS X mds
守护程序,或mdworker
,它是spotlight
使用http://en.wikipedia.org/wiki/Spotlight_%28software%29索引文件的后端(目录是文件! )在创建,删除和修改时。
如此处所示,OS X内核会通知“spotlight”它所响应的任何更改 - https://developer.apple.com/library/mac/documentation/Carbon/Conceptual/MetadataIntro/Concepts/HowDoesItWork.html#//apple_ref/doc/uid/TP40001847-CJBEJBHH
我正在为Windows,* Nix / Linux和OS X这样做。 是否有任何跨平台库提供钩子或这样做? 如果没有,您是否知道允许我这样做的Win32 API,Nix API,OS X API的任何资源?
我完全满足于只读访问权限并被拒绝访问系统敏感文件,但我能获得的越多越好!
这是一个桌面搜索引擎的列表,一些开源 - 也许如果你们中的任何人已经钻研了代码,你知道他们是如何管理它的吗?例如,也许Unity Dash会这样做? http://en.wikipedia.org/wiki/List_of_search_engines#Desktop_search_engines
我对此事的调查仍在继续:https://github.com/Centril/open-spotlight/wiki/Technical-in-depth#watcher
答案 0 :(得分:1)
我自己的研究提出了以下资源:
http://en.wikipedia.org/wiki/File_Alteration_Monitor, NFS aware == great for network
http://www.linuxdevcenter.com/pub/a/linux/2004/12/16/fam.html
http://en.wikipedia.org/wiki/Inotify (Linux only)
http://en.wikipedia.org/wiki/Gamin (Linux => Inotify, FreeBSD => kqueue)
http://en.wikipedia.org/wiki/FSEvents (OS X > 10.7 (Lion), target >= Yosemite 10.10)
http://en.wikipedia.org/wiki/Libevent (Platform Independent!)
Even better: https://github.com/facebook/hhvm/issues/2047
Winner: https://github.com/libuv/libuv, used by rust via libgreen.
Libuv似乎是一个很棒的图书馆。