c++ - 如何记录 system() 系统调用运行的所有命令

标签 c++ unix system solaris

我正在尝试调试一个 C++ 应用程序,它通过 system() 系统调用调用许多命令行应用程序,例如 grep 等。我需要通过 system() 调用查看应用程序正在执行的所有命令。

我尝试通过启用历史记录和查看 .history 文件来查看这些命令。但是这些命令不是通过终端执行的。历史文件只有交互式执行的命令。

知道如何做到这一点吗?

最佳答案

定义一个具有相似名称的新宏:

#define system(_x) std::cout << _x << std::endl; (system)(_x);

system 宏替换了 system 函数并且:

  1. 它将命令打印到标准输出(或其他地方)。
  2. 它调用系统函数。

感谢Hasturkun的建议,下面的比较好:

#define system(_x) (std::cout << (_x) << std::endl, system(_x))

这也返回 system 函数调用的结果 ;-)

关于c++ - 如何记录 system() 系统调用运行的所有命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511931/

相关文章:

c - 如何从accept调用获取套接字端口号(C UNIX)

php递归文件夹readdir vs查找性能

python - 停止调用新的 Shell/cmd 提示符,python

c# - 使用对象作为方法参数将 C# 移植到 C++

c++ - 如何以编程方式检索 eth0 id

c++ - 从同一索引的两个不同数组中获取数据

linux - wget递归下载之间的Grep文件

c - ollydbg 中有很多 'printf',但 a.exe 中只有一个 'printf'

c++ - 在顶点 C++ 中交换元素

c++ - 这个接口(interface)是线程安全的吗?