是否可以在OSX上监控某些正在运行的应用程序的编程文件访问?创建/释放文件句柄/描述符?我需要知道某个应用程序何时从文件中读取并停止阅读。
答案 0 :(得分:1)
我个人并没有亲自完成你所要求的,但这里有一些指示可能会让你开始。
Mac OS X附带一个命令行程序fs_usage,可以执行此操作,等等。您可以将其作为帮助应用程序启动并解析其输出。
$ sudo fs_usage -f filesys Safari
22:43:27 stat64 ry/Safari/Bookmarks.plist 0.000063 Safari
22:43:28 lstat64 English.lproj/Browser.nib 0.000025 Safari
22:43:28 getattrlist English.lproj/Browser.nib 0.000014 Safari
22:43:28 getattrlist English.lproj/Browser.nib 0.000017 Safari
22:43:28 open English.lproj/Browser.nib 0.000017 Safari
22:43:28 getdirentriesattr 0.000039 Safari
22:43:28 close 0.000008 Safari
opensnoop做了类似的事情。
$ sudo opensnoop
UID PID COMM FD PATH
205 284 locationd -1 /dev/dlci.spi-baseband.9
501 2836 Safari 11 /Users/zach/Library/Cookies/Cookies.plist
opensnoop建立在dtrace之上,几乎可以肯定你想要的。它上面有一个不错的教程here。
最后,如果您不介意使用私有API,则可以使用专为Spotlight构建的API,它为文件系统更改提供通知系统。 This tool建立在它之上。源代码可用。