我有一个程序,exec
是另一个程序,然后通过stdin/stdout
与那个进程通信。我想注入一个小的日志记录器,它捕获通信(我认为)是逐行同步的文本,传播双向通信,但也将其记录到一个文件中。
有什么简单的方法可以做到这一点吗?我尝试过使用strace
,但它会产生很多噪音,而且我更想捕获整个序列,所以我想在exec
发生时启动它。
我想创建一个小程序,就在调用者和被调用者之间,在它完成exec
后,真正的被调用者从stdin读取,日志,放到被调用者stdin上,然后等待一些东西返回到被调用者stdout上,记录下来,然后写回调用者。
听起来很简单,但我对设置管道连接和调试这样一个程序的困难感到有点害怕。因此,我认为在投入精力之前,我应该在这里请求一个更简单的解决方案。
我用谷歌搜索了一下,但很难表达出一个好的查询。大多数结果是像this这样的东西,它仍然是代码,并且只捕获单向通信。
发布于 2020-01-29 06:39:42
好吧,所以我咬紧牙关写了这个程序...
我们需要三个子进程,两个分别用于监视、传播和记录stdin和stdout,一个用于执行实际目标。
棘手的部分是如何连接管道。我从Ramesh Yerraballi的一段视频中学到了一些基础知识,这使我能够组装这些部件。
Here's the repo for ,用于在通过管道通信的两个进程之间注入管道间谍。
https://stackoverflow.com/questions/59937720
复制相似问题