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