我正在尝试调试一个 C++ 应用程序,它通过 system() 系统调用调用许多命令行应用程序,例如 grep 等。我需要通过 system() 调用查看应用程序正在执行的所有命令。
我尝试通过启用历史记录和查看 .history 文件来查看这些命令。但是这些命令不是通过终端执行的。历史文件只有交互式执行的命令。
知道如何做到这一点吗?
最佳答案
定义一个具有相似名称的新宏:
#define system(_x) std::cout << _x << std::endl; (system)(_x);
system
宏替换了 system
函数并且:
- 它将命令打印到标准输出(或其他地方)。
- 它调用
系统
函数。
感谢Hasturkun
的建议,下面的比较好:
#define system(_x) (std::cout << (_x) << std::endl, system(_x))
这也返回 system
函数调用的结果 ;-)
关于c++ - 如何记录 system() 系统调用运行的所有命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3511931/