exec.Command管道实现循环输入

hipeace86 · · 3936 次点击
stevewang
耶和华是我的牧者,我必不至缺乏。
供参考: ``` package main import ( "bufio" "fmt" "io" "os/exec" ) func encode(r *bufio.Reader, w io.Writer, str string) string { w.Write([]byte(str)) w.Write([]byte("\n")) str, err := r.ReadString('\n') if err != nil { panic(err) } // skip '\n' return str[:len(str)-1] } func main() { cmd := exec.Command(`./code.exe`) inr, inw := io.Pipe() outr, outw := io.Pipe() cmd.Stdin = inr cmd.Stdout = outw if err := cmd.Start(); err != nil { panic(err) } go cmd.Wait() strs := []string{ "35063812556aa2cdd6d1cbd", "350632125e6aa2cdded1c", } for _, str := range strs { result := encode(bufio.NewReader(outr), inw, str) fmt.Println(result) } } ```
#2
更多评论
stevewang
耶和华是我的牧者,我必不至缺乏。
`cmd.Run()`返回以后,子进程都已经结束了。
#1
谢谢,code.exe是一个死循环的程序,应该不会终止的 换了另外一种方法实现了,代码附到下面
#3