我有一个命令,我通过 Stdin 向其发送数据并期望 28 个输出流(包括Stdout)。
所以我想cmd.ExtraFiles为os.Pipe每个os.ExtraFiles.
我写了以下内容:
backgroundContext, cancelCommand := context.WithCancel(context.Background())
cmd := exec.CommandContext(backgroundContext, "command", args...)
cmd.ExtraFiles = make([]*io.File, 27, 0)
var outputPipe io.ReadCloser
var inputPipe io.WriteCloser
outputPipe, inputPipe, err = os.Pipe()
cmd.ExtraFiles[0] = &inputPipe
cmd.ExtraFiles[1] = &outputPipe
由于类型不匹配,最后两行会产生错误:
./main.go:876:26: cannot use &inputPipe (type *io.WriteCloser) as type *os.File in assignment
./main.go:877:26: cannot use &outputPipe (type *io.ReadCloser) as type *os.File in assignment
我确信我们可以分配管道,因为例如我可以使用该StdoutPipe()功能并且它按预期工作。
我该怎么做os.ExtraFiles呢?
慕村9548890
相关分类