+-
使用PTrace转储进程打开的文件

我已经熟悉并成功地使用strace转储了进程打开的文件。话虽如此,strace性能导致我的软件性能下降,我想为我的软件实现一个使用c ++的包装器,以便ptrace将收集和转储由软件打开的文件。

我找到了如何附加和修改注册表的指南 - 但这对任何事情都没有帮助。

感谢帮助。

0
投票

在linux上,您可以访问/proc/<pid>/fd中所有打开文件的列表。这个目录只包含每个打开文件的一堆符号链接;使用标准目录迭代,您可以非常轻松地创建打开文件列表,例如在终端上:

ls -l /proc/$(pidof bash)/fd/

对于创建C / C ++包装器,您可以例如使用此相关问题中描述的技术:How to list files in a directory in a C program?