github.com/secure-build/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  }