检测进程 used/modified/created/deleted 哪些文件的最佳方法是什么?

What is the best method to detect which files are used/modified/created/deleted by a process?

我想编写能够在进程(及其子进程)执行期间检测所有 used/created/modified/deleted 文件的软件。该进程尚未 运行 - 用户提供了一个命令行,稍后将通过 bash 进行子处理,因此我们可以在执行前后做一些事情,并控制环境命令是 运行中

到目前为止我想到了四种可能有用的方法:

我需要帮助来选择最佳的下降路径。我已经实现了第一种方法,因为它很简单,并为我提供了一种在日志记录后端 (http://ac.gt/log) 上工作的方法,但实际上我需要升级到其他方法之一。您的建议将是无价的:)

查看 "strace" 的源代码(及其 -f 以跟踪子级)。它基本上完成了您正在尝试做的事情。它捕获进程(或其子进程)的所有系统调用,因此您可以 grep 进行 "open" 等操作

下面link提供了一些使用ptrace系统调用实现自己的strace的例子:

https://blog.nelhage.com/2010/08/write-yourself-an-strace-in-70-lines-of-code/