給exec CMD我有這樣的代碼我怎樣才能在標準輸入golang
subProcess := exec.Cmd{
Path: execAble,
Args: []string{
fmt.Sprintf("-config=%s", *configPath),
fmt.Sprintf("-serverType=%s", *serverType),
fmt.Sprintf("-reload=%t", *reload),
fmt.Sprintf("-listenFD=%d", fd),
},
Dir: here,
}
subProcess.Stdout = os.Stdout
subProcess.Stderr = os.Stderr
logger.Info("starting subProcess:%s ", subProcess.Args)
if err := subProcess.Run(); err != nil {
logger.Fatal(err)
}
,然後我也os.Exit(1)停止主過程
我可以從子進程獲得輸出
但我也希望把標準輸入到
我嘗試
subProcess.Stdin = os.Stdin
但它不起作用
你寫入子進程的標準輸入由io.WriteString – user732961
但我關閉我的主進程(通過os.Exit())。所以任何代碼都無法在subProcess啓動後運行,我的問題是,如何讓os的stdin進入我的子進程。我只想通過catach ctrl-c做一些東西,但是當主進程退出時。我失去了在控制檯上的控制我開始程序 – user732961
我不知道該怎麼做,但我認爲如果你捕捉到主程序(==你不os.Exit)的信號,你可以發送它們通過subProcess.Process.Signal(信號)到子進程。這個版本更容易實現(我認爲,但不知道) – mraron