diff --git a/pkg/util/procutils/cmdsetsid_others.go b/pkg/util/procutils/cmdsetsid_others.go new file mode 100644 index 0000000000..583186e11d --- /dev/null +++ b/pkg/util/procutils/cmdsetsid_others.go @@ -0,0 +1,15 @@ +// +build !windows + +package procutils + +import ( + "os/exec" + "syscall" +) + +func cmdSetSid(cmd *exec.Cmd) { + if cmd.SysProcAttr == nil { + cmd.SysProcAttr = &syscall.SysProcAttr{} + } + cmd.SysProcAttr.Setsid = true +} diff --git a/pkg/util/procutils/cmdsetsid_windows.go b/pkg/util/procutils/cmdsetsid_windows.go new file mode 100644 index 0000000000..dfbd19de89 --- /dev/null +++ b/pkg/util/procutils/cmdsetsid_windows.go @@ -0,0 +1,7 @@ +package procutils + +import ( + "os/exec" +) + +func cmdSetSid(cmd *exec.Cmd) {} diff --git a/pkg/util/procutils/executor.go b/pkg/util/procutils/executor.go index 33af45c451..13d44a6482 100644 --- a/pkg/util/procutils/executor.go +++ b/pkg/util/procutils/executor.go @@ -67,17 +67,13 @@ type defaultExecutor struct{} func (e *defaultExecutor) Command(name string, args ...string) Cmd { cmd := exec.Command(name, args...) - cmd.SysProcAttr = &syscall.SysProcAttr{ - Setsid: true, - } + cmdSetSid(cmd) return &defaultCmd{cmd} } func (e *defaultExecutor) CommandContext(ctx context.Context, name string, args ...string) Cmd { cmd := exec.CommandContext(ctx, name, args...) - cmd.SysProcAttr = &syscall.SysProcAttr{ - Setsid: true, - } + cmdSetSid(cmd) return &defaultCmd{cmd} }