I'm starting a command and storing its PID with the intention of killing it later on. As the process is started with the command creates sub processes, I have to send the kill signal to all process group using
syscall.Kill(-pid, syscall.SIGINT)
This works fine in Linux but not on MacOS. The reason is that, on the mac when command starts it doesn't create it with a different process group, so sending signal to -pid
is failing. (If I send the signal to pid
, it doesn't kill the child processes)
I tried starting the command with the following flags as well, but it doesn't help on MacOS.
command := exec.Command(commandName, arg...)
command.SysProcAttr = &syscall.SysProcAttr{Setpgid: true, Pgid: 0}
The newly started process gets the group id of the terminal session where the go executable is running instead of new process group id. Is there a way to start a new process group in MacOS?