From 02fcc08f0039eadc5bf685d4703d241f5ba13497 Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Mon, 14 Jun 2021 16:14:17 +0200 Subject: [PATCH] better pgid killing --- main.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 2776b6f..4e5bb02 100644 --- a/main.go +++ b/main.go @@ -59,7 +59,7 @@ type BuildManager struct { exit bool wg sync.WaitGroup failedMutex sync.RWMutex - buildProcesses []*syscall.SysProcAttr + buildProcesses []*os.Process buildProcMutex sync.RWMutex } @@ -256,14 +256,14 @@ func (b *BuildManager) buildWorker(id int) { check(cmd.Start()) b.buildProcMutex.Lock() - b.buildProcesses = append(b.buildProcesses, cmd.SysProcAttr) + b.buildProcesses = append(b.buildProcesses, cmd.Process) b.buildProcMutex.Unlock() err := cmd.Wait() b.buildProcMutex.Lock() for i := range b.buildProcesses { - if b.buildProcesses[i].Pgid == cmd.SysProcAttr.Pgid { + if b.buildProcesses[i].Pid == cmd.Process.Pid { b.buildProcesses = append(b.buildProcesses[:i], b.buildProcesses[i+1:]...) break } @@ -675,7 +675,10 @@ func main() { buildManager.exit = true buildManager.buildProcMutex.RLock() for _, p := range buildManager.buildProcesses { - check(syscall.Kill(p.Pgid*-1, syscall.SIGTERM)) + pgid, err := syscall.Getpgid(p.Pid) + check(err) + + check(syscall.Kill(-pgid, syscall.SIGTERM)) } buildManager.buildProcMutex.RUnlock()