procgroup_unix.go имеет unix build-tag; под windows setpgid/killGroup не определялись → GOOS=windows сборка падала. Добавлен procgroup_windows.go: setpgid — no-op (нет Setpgid), killGroup — Process.Kill (дочерние группы не завершаются).
21 lines
805 B
Go
21 lines
805 B
Go
//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()
|
||
}
|