Мониторинг доступа к файлам запущенного приложения - PullRequest
2 голосов
/ 03 июня 2011

Можно ли программно контролировать доступ к файлам некоторых запущенных приложений в OSX?Создание / освобождение файлового дескриптора / дескриптора?Мне нужно знать, когда какое-то приложение читает файл и перестает читать.

1 Ответ

1 голос
/ 03 июня 2011

Я лично не сделал то, что вы просите, но вот несколько советов, которые могут помочь вам начать.

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, которое предоставляет систему уведомлений об изменениях файловой системы. Этот инструмент построен на нем.Исходный код доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...