diff --git a/internal/opencode/procgroup_windows.go b/internal/opencode/procgroup_windows.go new file mode 100644 index 0000000..13b762d --- /dev/null +++ b/internal/opencode/procgroup_windows.go @@ -0,0 +1,20 @@ +//go:build windows + +package opencode + +import "os/exec" + +// На Windows нет POSIX process-group (нет Setpgid / SIGKILL по -pgid). +// setpgid — no-op: дочерние процессы не группируются в отдельную группу. +func setpgid(cmd *exec.Cmd) {} + +// killGroup на Windows может убить только сам процесс (Process.Kill), +// дочерние процессы группы не завершаются. Для serve это приемлемо: при +// остановке сервера дочерние подпроцессы opencode всё равно умирают вместе +// с родителем/консолью. +func killGroup(proc *exec.Cmd) { + if proc == nil || proc.Process == nil { + return + } + _ = proc.Process.Kill() +}