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

Macos FSEvents-获取执行操作的进程的PID,macos,filesystems,fsevents,Macos,Filesystems,Fsevents,在OSX上,使用API,我可以轻松获得感兴趣路径的文件和目录通知(创建、删除等)。但是,我想知道是否有任何方法可以获取执行操作(例如创建文件)的进程的PID或名称。我知道,如果您实时监视文件系统,您可以获得此信息(请参见:),但我更喜欢使用FSEvents,因为它允许您精确指定要监视的路径,并以回调方式工作(因此可能CPU密集度较低?) 苹果有一个相对较新的(macOS 10.15+)C框架,该框架几乎可以满足您需要的所有文件系统事件监视要求: 高效/事件驱动模型() 粒度事件类型订阅模型()

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

苹果有一个相对较新的(macOS 10.15+)
C
框架,该框架几乎可以满足您需要的所有文件系统事件监视要求:

  • 高效/事件驱动模型()
  • 粒度事件类型订阅模型()
  • 丰富的事件上下文,包括
    pid
    uid
    ,以及更多内容(例如,用于文件创建的事件消息()包括一个包含流程详细信息的字段)
  • 不支持(尚未?)基于“感兴趣的路径”订阅文件系统事件,但可以基于源进程(例如)对事件进行“静音”(屏蔽)。与解析您感兴趣的路径的所有事件相比,这可能提供了一种改进。你可以随时向苹果公司提出这方面的功能要求
苹果一段时间以来一直在推动开发人员采用这个新框架,以支持以前的监控API(比如利用
KAUTH
MAC
;OpenBSMAPI的“传统”内核扩展),因此这是我唯一可以推荐投资的解决方案(超越
FSEvents

关于该主题,有一些WWDC会议和示例项目: