代码之家  ›  专栏  ›  技术社区  ›  mxcl

以正常用户权限监视OS X上子进程的文件系统活动

  •  1
  • mxcl  · 技术社区  · 16 年前

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

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

    我不能使用fsevents,因为它报告系统上所有进程发生的修改,我只对我的子进程感兴趣。

    1 回复  |  直到 9 年前
        1
  •  4
  •   Marc Unangst    16 年前

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

    关于这一点有更多的信息,在AmitSingh的“MacOSX内部构件:系统方法”的第2章中有一个例子。如果您没有副本,可以阅读 Google Books .