转储进程的标准输入和标准输出

Ant*_*ich 5 linux command-line shell bash shell-script

我有两个进程,比如说父子进程。Parent 启动 Child 并通过 child 的 stdin 和 stdout 与它通信。

Parent <-> Child
Run Code Online (Sandbox Code Playgroud)

这些进程使用文本协议,我需要对其进行调查。我想创建一个 bash 脚本,它将由父级而不是子级启动。此脚本将启动 Child,此外还将将 stdin 和 stdout 流转储到日志文件中。

Parent <-> MyProcess <-> Child
            |
            v
          log.txt
Run Code Online (Sandbox Code Playgroud)

bash 有没有办法做我需要的事情,或者我需要使用 C 吗?

n.s*_*.st 6

最简单的方法是使用tee将输入和输出转储到两个单独的文件中,如下所示:

#!/bin/bash
tee in.log | child | tee out.log
Run Code Online (Sandbox Code Playgroud)

您可以使用tee-a参数(append)将两个日志写入同一个文件,但我不太确定它们是否会以正确的顺序交错或一个接一个地写入:

#!/bin/bash
tee -a both.log | child | tee -a both.log
Run Code Online (Sandbox Code Playgroud)