如何获取导致文件系统事件的进程的PID?

时间:2017-12-03 20:37:46

标签: python vim pycharm python-watchdog kate

我正在考虑与python-watchdog合作。有没有办法确定哪个进程(PID)导致检测到的事件?

背景:我正在寻找一种方法来检测某些编辑器(如vimpycharmkate)导致的修改事件。简而言之,那些编辑不会修改"保存更改时的原始文件。相反,他们创造了一个新的并与旧的交换 - 以不同的方式略有不同。见related issue in python-watchdog。我没有重新配置那些编辑器,而是在寻找检测[create / delete / move]事件序列和可靠重新解释为"伪修改"的方法。原始文件的事件。

1 个答案:

答案 0 :(得分:1)

Demo of LoggedFS-python inside Jupyter

here上提供了上述演示。

任何基于inotify的解决方案,例如python-watchdog,都将无法提供进程ID(PID)。它本质上是inotify本身的规范限制。实际捕获PID的唯一位置是操作系统的VFS-layer。这意味着必须访问实际的文件系统实现-或从头开始实现文件系统。

正是出于这个目的,我实现了LoggedFS-python,一个FUSE file system。它可以通过任何操作传递到底层的“实际”文件系统,并且可以访问引起该操作的PID,以及其他附加信息。

loggedfs.loggedfs_notify提供了相关的基础结构。