在高层次上,我想完成以下工作。每个框都是一个正在运行的程序,从 STDIN 读取并写入 STDOUT。我想编写一个 golang 程序来设置并运行它,以便所有生产/消费并行发生。我正在考虑使用 io.Pipe、channels 和 os.Exec 等。
+-----------+
| PROG-1 +-----------------------+
+---------> | | v
| +-----------+
| +-------+
+-----------+ | DIFF +----->
| GENERATOR | | |
+-----------+ +---+---+
| ^
| |
| +-----------+ |
| | | |
+---------> | PROG-2 +-----------------------+
+-----------+
这是一个尝试,但它似乎不能可靠地工作,而且“DIFF”部分也没有实现。
package main
import (
"io"
"os"
"os/exec"
)
const UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const LOWER = "abcdefghijklmnopqrstuvwxyz"
func runProg(r io.Reader, cmd *exec.Cmd) {
cmd.Stdin = r
cmd.Stdout = os.Stdout // I want this to go to a third prog call "diff".
cmd.Run()
}
喵喵时光机
相关分类