Я лично не сделал то, что вы просите, но вот несколько советов, которые могут помочь вам начать.
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 , который почти наверняка может делать то, что вы хотите.Здесь есть приличное руководство здесь .
Наконец, если вы не возражаете против использования частного API, есть одно, которое было создано для Spotlight, которое предоставляет систему уведомлений об изменениях файловой системы. Этот инструмент построен на нем.Исходный код доступен.