unarr/internal/agent/process_windows.go
Deivid Soto 35e5298f23 feat: add clean command to remove temp files, logs, and cached data
Adds `unarr clean` with interactive confirmation, --dry-run, --yes,
and --all flags. Safely skips recent usenet resume files (<7 days) to
preserve download progress. Includes platform-specific PID detection
(Unix signal 0 / Windows heartbeat heuristic), CleanableBytes callback
for future heartbeat reporting, and uses shared ui.FormatBytes.
2026-03-29 11:04:51 +02:00

25 lines
604 B
Go

//go:build windows
package agent
import (
"os"
"time"
)
// IsProcessAlive checks if a process with the given PID is running.
// On Windows, os.FindProcess + a zero-timeout wait is used since
// signal 0 is not supported.
func IsProcessAlive(pid int) bool {
p, err := os.FindProcess(pid)
if err != nil {
return false
}
// On Windows, FindProcess always succeeds. Use the state file's
// last heartbeat as a heuristic: if it's recent, the process is alive.
state := ReadState()
if state == nil || state.PID != pid {
return false
}
return time.Since(state.LastHeartbeat) < 2*time.Minute
}