diff options
Diffstat (limited to 'internal/server/sysproc_unix.go')
| -rw-r--r-- | internal/server/sysproc_unix.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/internal/server/sysproc_unix.go b/internal/server/sysproc_unix.go new file mode 100644 index 0000000..91dee0e --- /dev/null +++ b/internal/server/sysproc_unix.go @@ -0,0 +1,36 @@ +//go:build !windows + +package server + +import ( + "os" + "syscall" +) + +func detachAttr() *syscall.SysProcAttr { + return &syscall.SysProcAttr{Setsid: true} +} + +func signalStop(pid int) error { + proc, err := os.FindProcess(pid) + if err != nil { + return err + } + return proc.Signal(syscall.SIGTERM) +} + +func forceKill(pid int) error { + proc, err := os.FindProcess(pid) + if err != nil { + return err + } + return proc.Kill() +} + +func isAlive(pid int) bool { + proc, err := os.FindProcess(pid) + if err != nil { + return false + } + return proc.Signal(syscall.Signal(0)) == nil +} |
