Macos FSEvents-获取执行操作的进程的PID
在OSX上,使用API,我可以轻松获得感兴趣路径的文件和目录通知(创建、删除等)。但是,我想知道是否有任何方法可以获取执行操作(例如创建文件)的进程的PID或名称。我知道,如果您实时监视文件系统,您可以获得此信息(请参见:),但我更喜欢使用Macos FSEvents-获取执行操作的进程的PID,macos,filesystems,fsevents,Macos,Filesystems,Fsevents,在OSX上,使用API,我可以轻松获得感兴趣路径的文件和目录通知(创建、删除等)。但是,我想知道是否有任何方法可以获取执行操作(例如创建文件)的进程的PID或名称。我知道,如果您实时监视文件系统,您可以获得此信息(请参见:),但我更喜欢使用FSEvents,因为它允许您精确指定要监视的路径,并以回调方式工作(因此可能CPU密集度较低?) 苹果有一个相对较新的(macOS 10.15+)C框架,该框架几乎可以满足您需要的所有文件系统事件监视要求: 高效/事件驱动模型() 粒度事件类型订阅模型()
FSEvents
,因为它允许您精确指定要监视的路径,并以回调方式工作(因此可能CPU密集度较低?) 苹果有一个相对较新的(macOS 10.15+)C
框架,该框架几乎可以满足您需要的所有文件系统事件监视要求:
- 高效/事件驱动模型()
- 粒度事件类型订阅模型()
- 丰富的事件上下文,包括
、pid
,以及更多内容(例如,用于文件创建的事件消息()包括一个包含流程详细信息的字段)uid
- 不支持(尚未?)基于“感兴趣的路径”订阅文件系统事件,但可以基于源进程(例如)对事件进行“静音”(屏蔽)。与解析您感兴趣的路径的所有事件相比,这可能提供了一种改进。你可以随时向苹果公司提出这方面的功能要求
KAUTH
或MAC
;OpenBSMAPI的“传统”内核扩展),因此这是我唯一可以推荐投资的解决方案(超越FSEvents
)
关于该主题,有一些WWDC会议和示例项目: