kill process group

This commit is contained in:
2021-06-14 16:08:21 +02:00
parent 7575005b9d
commit 877243dfce

View File

@@ -59,7 +59,7 @@ type BuildManager struct {
exit bool exit bool
wg sync.WaitGroup wg sync.WaitGroup
failedMutex sync.RWMutex failedMutex sync.RWMutex
buildProcesses []*os.Process buildProcesses []*syscall.SysProcAttr
buildProcMutex sync.RWMutex buildProcMutex sync.RWMutex
} }
@@ -256,14 +256,14 @@ func (b *BuildManager) buildWorker(id int) {
check(cmd.Start()) check(cmd.Start())
b.buildProcMutex.Lock() b.buildProcMutex.Lock()
b.buildProcesses = append(b.buildProcesses, cmd.Process) b.buildProcesses = append(b.buildProcesses, cmd.SysProcAttr)
b.buildProcMutex.Unlock() b.buildProcMutex.Unlock()
err := cmd.Wait() err := cmd.Wait()
b.buildProcMutex.Lock() b.buildProcMutex.Lock()
for i := range b.buildProcesses { for i := range b.buildProcesses {
if b.buildProcesses[i].Pid == cmd.Process.Pid { if b.buildProcesses[i].Pgid == cmd.SysProcAttr.Pgid {
b.buildProcesses = append(b.buildProcesses[:i], b.buildProcesses[i+1:]...) b.buildProcesses = append(b.buildProcesses[:i], b.buildProcesses[i+1:]...)
break break
} }
@@ -675,7 +675,7 @@ func main() {
buildManager.exit = true buildManager.exit = true
buildManager.buildProcMutex.RLock() buildManager.buildProcMutex.RLock()
for _, p := range buildManager.buildProcesses { for _, p := range buildManager.buildProcesses {
check(p.Signal(syscall.SIGTERM)) check(syscall.Kill(p.Pgid*-1, syscall.SIGTERM))
} }
buildManager.buildProcMutex.RUnlock() buildManager.buildProcMutex.RUnlock()