31 lines
585 B
Go
31 lines
585 B
Go
//go:build linux
|
|
|
|
package game
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// processes lists the running processes from /proc/<pid>/comm.
|
|
func processes() ([]Process, error) {
|
|
entries, err := os.ReadDir("/proc")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var ps []Process
|
|
for _, e := range entries {
|
|
pid, err := strconv.Atoi(e.Name())
|
|
if err != nil {
|
|
continue
|
|
}
|
|
comm, err := os.ReadFile("/proc/" + e.Name() + "/comm")
|
|
if err != nil {
|
|
continue // process vanished mid-walk
|
|
}
|
|
ps = append(ps, Process{PID: pid, Name: strings.TrimSpace(string(comm))})
|
|
}
|
|
return ps, nil
|
|
}
|