diff --git a/sysproc_darwin.go b/sysproc_darwin.go new file mode 100644 index 0000000..c2c0511 --- /dev/null +++ b/sysproc_darwin.go @@ -0,0 +1,12 @@ +package main + +import ( + "os/exec" + "syscall" +) + +func setCommandSysProcAttr(cmd *exec.Cmd) { + cmd.SysProcAttr = &syscall.SysProcAttr{ + Setpgid: true, + } +} diff --git a/sysproc_linux.go b/sysproc_linux.go index 01ced4f..c2c0511 100644 --- a/sysproc_linux.go +++ b/sysproc_linux.go @@ -1,5 +1,3 @@ -//go:build !windows - package main import ( @@ -7,9 +5,6 @@ import ( "syscall" ) -// setCommandSysProcAttr sets platform-specific process attributes. -// On Linux: sets a new process group so child processes don't receive -// terminal signals meant for the parent, and enables proper cleanup. func setCommandSysProcAttr(cmd *exec.Cmd) { cmd.SysProcAttr = &syscall.SysProcAttr{ Setpgid: true, diff --git a/sysproc_windows.go b/sysproc_windows.go new file mode 100644 index 0000000..8a17d24 --- /dev/null +++ b/sysproc_windows.go @@ -0,0 +1,7 @@ +package main + +import "os/exec" + +func setCommandSysProcAttr(cmd *exec.Cmd) { + // Windows does not use Setpgid +}