24 lines
532 B
Go
24 lines
532 B
Go
//go:build linux
|
|
|
|
package opencode
|
|
|
|
import (
|
|
"os/exec"
|
|
"syscall"
|
|
)
|
|
|
|
func sysProcAttr(proc *exec.Cmd) {
|
|
proc.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
|
|
}
|
|
|
|
// killProcGroup убивает всю process-group по лидеру pid (SIGKILL дочерним и
|
|
// SIGTERM лидеру). Игнорирует ошибки: weakest-effort teardown.
|
|
func killProcGroup(pid int) {
|
|
pgid, err := syscall.Getpgid(pid)
|
|
if err != nil {
|
|
return
|
|
}
|
|
_ = syscall.Kill(-pgid, syscall.SIGKILL)
|
|
_ = syscall.Kill(pid, syscall.SIGKILL)
|
|
}
|