Documentation
¶
Overview ¶
Package process provides cross-platform process-existence checks. Used by the bus daemon's stale-lock recovery path: bus.lock holds the daemon's PID; on startup a competing process reads that PID and calls Alive() to decide whether to abort (the holder is still running) or steal the lock (orphan).
On Unix this is the standard signal-0 trick (syscall.Kill(pid, 0)) which errors with ESRCH if the process is gone. On Windows it uses OpenProcess with PROCESS_QUERY_LIMITED_INFORMATION and GetExitCodeProcess to detect STILL_ACTIVE; this avoids the Unix-only assumption in plan §1.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Alive ¶
Alive reports whether a process with the given PID is currently running. Returns false for non-positive PIDs without performing any syscall.
On Unix this uses signal 0 (syscall.Kill(pid, 0)), which performs the normal permission/existence check without delivering a signal:
- nil error → process exists and we have permission
- syscall.EPERM → process exists but owned by another user (still counts as alive for our purpose)
- syscall.ESRCH → no such process
Any other error is treated as "alive" defensively, so we never steal a lock based on an ambiguous syscall failure.
Types ¶
This section is empty.