如何通过管道注入通信日志

问题描述 投票:0回答:1

我有一个程序,exec是另一个程序,然后通过stdin/stdout与该进程通信。我想注入一个小的记录器来捕获通信,(我认为)它是逐行同步的文本,传播双向通信,但也将其记录到文件中。

有没有简单的方法可以做到这一点?我曾尝试使用strace,但是它只会带来很多噪音,我想捕获整个序列,因此我想在exec ing发生时启动它。

我曾想过创建一个小程序,该程序位于调用者和被调用者之间,并且在它被exec处理后,真正的被调用者将从stdin中读取,记录日志,并将其放在被调用者stdin上,然后等待一些东西回到被调用者的标准输出上,记录下来,然后写回给调用者。

听起来很简单,但是由于设置管道连接以及调试此类程序的困难,我对此感到有些害怕。因此,我认为在此努力之前,我想在这里寻求一个更简单的解决方案。

我已经用Google搜索了一下,但是很难提出一个好的查询。大多以this之类的东西结束,它仍然是代码,并且仅捕获单向通信。

pipe trace inject
1个回答
0
投票

好,所以我咬紧牙关,编写了程序...

我们需要三个子进程,两个用于分别监视,传播和记录stdin和stdout,一个用于执行实际目标。

棘手的部分是如何连接管道。我从Ramesh Yerraballi的视频中学到了一些基础知识,使我能够组装这些作品。

[Here's a gist用于在通过管道进行通信的两个进程之间注入管道间谍的实现。

© www.soinside.com 2019 - 2024. All rights reserved.