gpt4 book ai didi

macos - FSEvents - 获取执行操作的进程的 PID

转载 作者:行者123 更新时间:2023-12-03 14:29:47 30 4
gpt4 key购买 nike

在 OS X 上,使用 FSEvents API,我可以轻松获取感兴趣的路径的文件和目录通知(创建、删除等)。但是,我想知道是否有任何方法可以获得执行操作的进程的 PID 或名称(例如,创建文件)。我知道如果您实时监控文件系统,您可以获得此信息(请参阅: fs_logger ),但我更喜欢使用 FSEvents因为它允许您确切地指定要监视的路径并以回调方式工作(因此 CPU 密集程度可能较低?)。

最佳答案

Apple 有一个相对较新的 (macOS 10.15+) C框架称为 Endpoint Security这几乎满足您正在寻找的所有文件系统事件监控要求:

  • 高效/事件驱动模型 ( es_new_client() )
  • 粒度事件类型订阅模型 ( es_subscribe() )
  • 丰富的事件上下文,包括 pid , uid ,等等(例如文件创建的事件消息( es_event_create_t )包括一个 es_process_t 字段,其中包含进程详细信息)
  • 不支持(还?)基于“感兴趣的路径”订阅文件系统事件,但事件可以基于源进程(例如 es_mute_process() )被“静音”(屏蔽)。与解析您感兴趣的路径的所有事件相比,这可能会有所改进。您始终可以为此向 Apple 提交功能请求。

  • 一段时间以来,Apple 一直在插入开发人员采用这种新框架,以支持以前的监控 API(例如利用 KAUTHMAC 的“遗留”内核扩展; OpenBSM API),因此这是我能做的唯一解决方案建议继续投资(超越 FSEvents)。
    有一些关于该主题的 WWDC session 和示例项目: https://developer.apple.com/documentation/endpointsecurity/monitoring_system_events_with_endpoint_security

    关于macos - FSEvents - 获取执行操作的进程的 PID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26049915/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com