This commit is contained in:
2026-06-20 19:16:44 +08:00
parent db3d030169
commit dbb87823e8
26 changed files with 676 additions and 115 deletions
+5 -1
View File
@@ -41,8 +41,12 @@ func (g *unixGroup) TerminateGroup(done <-chan struct{}, grace time.Duration) {
_ = syscall.Kill(-g.pgid, syscall.SIGTERM)
select {
case <-done:
return
// 组长已被回收(Cmd.Wait 返回),但其子孙(如 trap SIGTERM 的
// vite/esbuild/node)可能仍存活于同一进程组。无条件向整组补发一次
// SIGKILL 以确保不留下任何孤儿;若组已全灭,内核返回 ESRCH,无害。
_ = syscall.Kill(-g.pgid, syscall.SIGKILL)
case <-time.After(grace):
// 组长自身超过 grace 仍未退出:直接对整组 SIGKILL。
_ = syscall.Kill(-g.pgid, syscall.SIGKILL)
}
}