all repos — erl @ 1ce32a03324041480df18cc528628645536e5e8c

Execute Reload Loop

kill process group if supported

Alan Pearce
commit

1ce32a03324041480df18cc528628645536e5e8c

parent

85ddbb564ce3646f5be800f9957ac1b23d1ce1b2

1 file changed, 11 insertions(+), 1 deletion(-)

changed files
M command/command.gocommand/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 }