假设我有一个程序,它只接受输入并对其进行一些处理。 像这样
myprog.go
package main
import (
"fmt"
)
func main() {
var i int
fmt.Print("Type a number: ")
fmt.Scan(&i)
fmt.Println("Incremented:", i+1)
}
现在我编译这个并将这个程序称为这样的子进程
testsub.go
package main
import (
"fmt"
"io"
"os/exec"
)
func main() {
subProcess := exec.Command("./myprog")
go func() {
stdin, err := subProcess.StdinPipe()
defer stdin.Close()
if err != nil {
panic(err)
}
io.WriteString(stdin, "33")
}()
output, err := subProcess.CombinedOutput()
if err != nil {
panic(err)
}
fmt.Print(string(output))
}
我得到的输出是
Type a number: Incremented: 34
我写入stdin的提示没有显示。我假设这是因为输出被写入子进程的标准输出。是否有可能获得以下输出而不需要像修改输出文本这样的 hacky 解决方法。?
Type a number: 33
Incremented: 34