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

Raj*_*Raj 1 c++ unix solaris system

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

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

知道如何做到这一点?

M. *_* E. 5

定义具有类似名称的新宏:

#define system(_x) std::cout << _x << std::endl; (system)(_x);
Run Code Online (Sandbox Code Playgroud)

system宏替换system功能:

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

感谢您Hasturkun的建议,以下是更好的:

#define system(_x) (std::cout << (_x) << std::endl, system(_x))
Run Code Online (Sandbox Code Playgroud)

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