run: don't override supplied SysProcAttr
If we're passed an exec.Cmd that already has a configured SysProcAttr,
Start was obliterating it by overwriting it with a new struct in order
to set `Setctty` and `Setsid`. Instead, just adjust the parameters that
we need.
Jonathan Boulle
8 years ago
17 | 17 | c.Stdout = tty |
18 | 18 | c.Stdin = tty |
19 | 19 | c.Stderr = tty |
20 | c.SysProcAttr = &syscall.SysProcAttr{Setctty: true, Setsid: true} | |
20 | if c.SysProcAttr == nil { | |
21 | c.SysProcAttr = &syscall.SysProcAttr{} | |
22 | } | |
23 | c.SysProcAttr.Setctty = true | |
24 | c.SysProcAttr.Setsid = true | |
21 | 25 | err = c.Start() |
22 | 26 | if err != nil { |
23 | 27 | pty.Close() |