github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/pkg/procutil/procutil_unix.go (about)

     1  //go:build !windows
     2  // +build !windows
     3  
     4  package procutil
     5  
     6  import (
     7  	"os"
     8  	"os/exec"
     9  	"syscall"
    10  )
    11  
    12  func SetOptNewProcessGroup(attrs *syscall.SysProcAttr) {
    13  	attrs.Setpgid = true
    14  }
    15  
    16  func KillProcessGroup(cmd *exec.Cmd) {
    17  	if cmd == nil || cmd.Process == nil {
    18  		return
    19  	}
    20  
    21  	// Kill the entire process group.
    22  	_ = syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL)
    23  }
    24  
    25  func GracefullyShutdownProcess(p *os.Process) error {
    26  	if p == nil {
    27  		return nil
    28  	}
    29  
    30  	return syscall.Kill(-p.Pid, syscall.SIGTERM)
    31  }