c++ - 如何找出所有闭源应用程序正在写入的位置?

标签 c++ c perl unix shell

我有一个应用程序(我没有源代码),可以像这样从命令行调用

$ ./notmyapp

我想知道应用程序写入的所有位置。它在调用它的目录中输出一些文件,但我需要确保这些是唯一创建的文件。

因此,我需要隔离应用程序以找出它在运行时创建/编辑的所有文件。

我该怎么做?

使用 Perl 或 C 或 C++ 的某种方式?这些语言中的任何标准库是否有办法做到这一点?

最佳答案

stracektrace/kdumptrussdtruss 等您的平台提供的用于跟踪系统调用的其他程序可能正是您正在寻找的。

期待其中任何一个的大量输出。要弄清楚应用程序正在读取和写入哪些文件,您可能希望将输出限制为仅几个系统调用。 strace -eopen ./notmyapp,例如。

应用程序也可能会派生出子进程来完成它的一些工作。对于大多数系统调用跟踪器,您还必须具体跟踪那些子进程。对于 strace,那将是 strace -f ./notmyapp

关于c++ - 如何找出所有闭源应用程序正在写入的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666105/

相关文章:

c++ - 即使我设置了限制,我的 for 语句也会不断重复?

c - C预处理文件是否包含源文件行号信息?

perl - 用于返回数组的两个最大值的具有低计算复杂度的单行是什么?

C++模板类型和模板类型

C++ 17 为什么不删除二合字母和三合字母?

c - 如果某些限制指针指向同一个对象,为什么编译器不生成警告或错误?

c - 如何对指针进行类型转换以适应变量结构?

php - 如何使用 perl 在 php mysql 中从 linux 服务器收集数据?

ruby - 比较两个正则表达式的严格性?

c++ - 从传递给新线程 C++ 的 vector 中删除项目