使用普通用户权限监视OS X上子进程的文件系统活动

时间:2009-11-07 15:48:08

标签: macos filesystemwatcher

我生成了一个子进程,需要知道它修改,创建或删除的文件。

我不能使用dtrace因为我不能sudo。

我无法使用FSEvents,因为它报告了系统上所有进程发生的修改,而我只对我的子进程感兴趣。

1 个答案:

答案 0 :(得分:4)

我将探索使用DYLD_INSERT_LIBRARIES(相当于LD_PRELOAD的Mac OS)来为您感兴趣的libc例程或系统调用设置自己的监视例程。例如,您可以编写一个{ {1}}执行您感兴趣的跟踪的例程,然后调用真正的libc my_open()来完成剩下的工作。您需要为要捕获的所有与文件系统相关的调用(打开,关闭,读取,写入,重命名等)执行此操作。您应该能够在之前设置open()环境变量你生成你的子进程,而不需要是root。

在Amit Singh的“Mac OS X Internals:A Systems Approach”的第2章中,有关于此的更多信息和示例。如果您没有副本,可以阅读Google Books上的相关部分。