diff --git a/src/pkg/sys/cmd_unix.go b/src/pkg/sys/cmd_unix.go index 618e5141..01418be7 100644 --- a/src/pkg/sys/cmd_unix.go +++ b/src/pkg/sys/cmd_unix.go @@ -1,6 +1,5 @@ -// +build aix darwin dragonfly freebsd js,wasm linux netbsd openbsd solaris plan9 - -// Unix environment variables. +//go:build !windows +// +build !windows package sys diff --git a/src/pkg/sys/cmd_windows.go b/src/pkg/sys/cmd_windows.go index 09278176..0ef38ba8 100644 --- a/src/pkg/sys/cmd_windows.go +++ b/src/pkg/sys/cmd_windows.go @@ -1,5 +1,3 @@ -// Windows environment variables. - package sys import ( diff --git a/src/server/engine/cmd_unix.go b/src/server/engine/cmd_unix.go new file mode 100644 index 00000000..8db35a7e --- /dev/null +++ b/src/server/engine/cmd_unix.go @@ -0,0 +1,14 @@ +//go:build !windows +// +build !windows + +package engine + +import ( + "os/exec" + "syscall" +) + +func startCmd(c *exec.Cmd) error { + c.SysProcAttr = &syscall.SysProcAttr{Setpgid: true} + return c.Start() +} diff --git a/src/server/engine/cmd_windows.go b/src/server/engine/cmd_windows.go new file mode 100644 index 00000000..6e429514 --- /dev/null +++ b/src/server/engine/cmd_windows.go @@ -0,0 +1,7 @@ +package engine + +import "os/exec" + +func startCmd(c *exec.Cmd) error { + return c.Start() +} diff --git a/src/server/engine/notify.go b/src/server/engine/notify.go index aef99c32..c921ebb0 100644 --- a/src/server/engine/notify.go +++ b/src/server/engine/notify.go @@ -242,7 +242,7 @@ func callScript(stdinBytes []byte) { cmd.Stdout = &buf cmd.Stderr = &buf - err := cmd.Start() + err := startCmd(cmd) if err != nil { logger.Errorf("event_notify: run cmd err: %v", err) return