【问题标题】:how to monitor operation on mac platformmac平台如何监控操作
【发布时间】:2015-08-08 23:32:33
【问题描述】:

我正在尝试获取文件打开/写入/创建操作,我尝试过 fslogger 只能获取文件创建/删除....和其他操作,无法进行打开/关闭操作, 然后我写了一个驱动来做,可以开/关操作,但不能进行创建操作,而且太乱了! 例如,如果我打开一个文件并修改它,然后关闭它,驱动程序会得到很多打开/写入操作..我无法判断哪个是真正由用户打开/关闭操作引起的.. 关于这个的任何提示? 谢谢。

【问题讨论】:

    标签: macos kernel-extension file-monitoring


    【解决方案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,但你可能会用另一种方法成功(如果你这样做,请在 cmets 中告诉我!)。

    有关Kauth here 和KQueue here 的更多信息。它没有出色的文档记录,但是这两者之间有足够的信息来确定您需要做什么。

    【讨论】:

    • 嗨,乔,感谢您的回复,实际上我正在使用 kauth。但我遇到了here 提到的问题
    • 我已经有一段时间没有这样做了,但我认为我得到了足够的信息。抱歉,我想不起来更多了。
    • 没关系,我觉得按照kauth是没有办法得到我想要的东西的……在Mac平台的用户空间中,一个简单的打开/关闭背后似乎有太多的故事。不管怎样,谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-02-21
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2012-08-14
    相关资源
    最近更新 更多