как отслеживать работу на платформе Mac

Я пытаюсь выполнить операцию открытия / записи / создания файла, я пробовал fslogger, который может выполнять только создание / удаление файла .... и другие операции, не могу выполнить операцию открытия / закрытия, затем я написал драйвер для этого, Я могу запустить операцию открытия / закрытия, но не могу запустить операцию создания, более того, это слишком беспорядочно! например, если я открываю файл и изменяю его, а затем закрываю его, драйвер получает много операций открытия / записи ... Я не могу сказать, какая из них действительно вызвана операцией открытия / закрытия пользователя ... любые подсказки об этом? Благодарю.


person Jet    schedule 04.09.2013    source источник


Ответы (1)


Лучшим выбором будет система KAuth. Вы устанавливаете свой обработчик kauth (как расширение ядра) и получаете различные коды обратного вызова, когда кто-то пытается создать, открыть или закрыть файл. Это включает в себя обратный вызов на критическом пути открытия файлов, поэтому все, что вы делаете, должно быть быстрым!

Цитировать:

KAUTH_SCOPE_FILEOP определяет следующие действия.

  • KAUTH_FILEOP_OPEN
  • KAUTH_FILEOP_CLOSE
  • KAUTH_FILEOP_CLOSE_MODIFIED
  • KAUTH_FILEOP_RENAME
  • KAUTH_FILEOP_EXCHANGE
  • KAUTH_FILEOP_LINK
  • KAUTH_FILEOP_EXEC

https://developer.apple.com/library/mac/technotes/tn2127/_index.html

Если вы пишете kext, у вас возникает вопрос, как вернуть эту информацию в пользовательское пространство. FWIW Я использовал Kqueue, но вы можете добиться успеха с другим методом (дайте мне знать в комментариях, если вы это сделаете!).

Подробнее о Kauth здесь и KQueue здесь. Это плохо документировано, но между этими двумя есть достаточно информации, чтобы понять, что вам нужно делать.

person Joe    schedule 04.09.2013
comment
привет, Джо, спасибо за ответ, на самом деле я использую kauth. но я столкнулся с проблемой, упомянутой здесь - person Jet; 05.09.2013
comment
Прошло много времени с тех пор, как я это сделал, но я думал, что получил достаточно информации. Я не могу вспомнить ничего большего, извините. - person Joe; 05.09.2013
comment
все в порядке, я чувствую, что невозможно получить то, что я хочу, только в соответствии с kauth ... кажется, что за простым открытием / закрытием в пользовательском пространстве на платформе Mac слишком много историй. что угодно, спасибо - person Jet; 05.09.2013