kill process group if supported
1 file changed, 11 insertions(+), 1 deletion(-)
changed files
M command/command.go → command/command.go
@@ -63,7 +63,13 @@ } signal := syscall.SIGINT cmd.out.Info("[sending %s to command]\n", signal) - err := cmd.Process.Signal(signal) + var target int + if cmd.SysProcAttr != nil && cmd.SysProcAttr.Pgid != 0 { + target = cmd.SysProcAttr.Pgid + } else { + target = cmd.Process.Pid + } + err := syscall.Kill(target, signal) if err != nil { return fmt.Errorf("error killing command: %v", err) }@@ -132,6 +138,10 @@ } func (cmd *Cmd) makeCommand() { cmd.Cmd = exec.Command(cmd.name, cmd.args...) + cmd.SysProcAttr = &syscall.SysProcAttr{ + Setpgid: true, + Pgid: 0, + } cmd.Stdout = cmd.opts.Stdout cmd.Stderr = cmd.opts.Stderr }