Windows - Process keeps running when stdin is set
powellnorma opened this issue · comments
powellnorma commented
The following works fine:
func runPsCmd(psCmd string) {
pthPs := `C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe`
cmd := exec.Command(pthPs, "-Command", psCmd)
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
err := cmd.Start()
if err != nil {
panic(err)
}
err = cmd.Wait()
if err != nil {
exitError, ok := err.(*exec.ExitError)
if ok {
os.Exit(exitError.ExitCode())
} else {
panic(err)
}
}
os.Exit(0)
}
func main() {
runPsCmd("echo myTest")
}
However when doing the same but with:
func runPsCmd(s ssh.Session, psCmd string) {
// [..]
cmd.Stderr = s
cmd.Stdout = s
cmd.Stdin = s
// [..]
}
cmd.Wait()
blocks until I pressed Enter once. When I don't assign cmd.Stdin
at all, it works as expected, but some programs may require user input. What could this by caused by? And how can this be fixed?