github.com/nilium/gitlab-runner@v12.5.0+incompatible/helpers/process_group_unix.go (about) 1 // +build darwin dragonfly freebsd linux netbsd openbsd 2 3 package helpers 4 5 import ( 6 "os/exec" 7 "syscall" 8 ) 9 10 func SetProcessGroup(cmd *exec.Cmd) { 11 // Create process group 12 cmd.SysProcAttr = &syscall.SysProcAttr{ 13 Setpgid: true, 14 } 15 } 16 17 func KillProcessGroup(cmd *exec.Cmd) { 18 if cmd == nil { 19 return 20 } 21 22 process := cmd.Process 23 if process != nil { 24 if process.Pid > 0 { 25 syscall.Kill(-process.Pid, syscall.SIGKILL) 26 } else { 27 // doing normal kill 28 process.Kill() 29 } 30 } 31 }