github.com/secure-build/gitlab-runner@v12.5.0+incompatible/executors/custom/process/killer_unix.go (about)

     1  // +build darwin dragonfly freebsd linux netbsd openbsd
     2  
     3  package process
     4  
     5  import (
     6  	"os"
     7  	"syscall"
     8  
     9  	"gitlab.com/gitlab-org/gitlab-runner/common"
    10  )
    11  
    12  type unixKiller struct {
    13  	logger  common.BuildLogger
    14  	process *os.Process
    15  }
    16  
    17  func NewKiller(logger common.BuildLogger, process *os.Process) Killer {
    18  	return &unixKiller{
    19  		logger:  logger,
    20  		process: process,
    21  	}
    22  }
    23  
    24  func (pk *unixKiller) Terminate() {
    25  	err := pk.process.Signal(syscall.SIGTERM)
    26  	if err != nil {
    27  		pk.logger.Errorln("Failed to send SIGTERM signal:", err)
    28  
    29  		// try to kill right-after
    30  		pk.ForceKill()
    31  	}
    32  }
    33  
    34  func (pk *unixKiller) ForceKill() {
    35  	err := pk.process.Kill()
    36  	if err != nil {
    37  		pk.logger.Errorln("Failed to force-kill:", err)
    38  	}
    39  }