diff options
| author | hachem <im@hachem.wtf> | 2026-08-29 19:15:28 +0200 |
|---|---|---|
| committer | hachem <im@hachem.wtf> | 2026-08-29 19:15:28 +0200 |
| commit | 3eba8fbd243c0ffcb1c396526a4e19d1abc1eaf9 (patch) | |
| tree | 31613c6da3a3da3c8777d094f5e1466804dbf3a9 /internal/server/sysproc_unix.go | |
| parent | fcbbeccaa80c7e120933682b330272a1490c1cf5 (diff) | |
add: control flow
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 +} |
