//go:build unix package task import ( "errors" "os" "os/exec" "syscall" ) func configureCommandContext(cmd *exec.Cmd) { cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} cmd.Cancel = func() error { if cmd.Process == nil { return os.ErrProcessDone } if err := syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); err != nil { if errors.Is(err, syscall.ESRCH) { return os.ErrProcessDone } return err } return nil } }