Wie man Prozessinformationen anhand der PID in Go erhält
Hallo zusammen! Ich schreibe ein kleines Monitoring-Tool in Go, das laufende Prozesse in Linux überwachen soll. Ich muss anhand der PID (Prozess-ID) grundlegende Informationen abrufen: Prozessname, Status (running/sleeping/zombie), Speichernutzung, Laufzeit und Pfad zur ausführbaren Datei.
Ich habe einfach angefangen: Ich lese `/proc/[PID]/status` und `/proc/[PID]/cmdline`. Aber das wirkt wie ein Workaround – ich muss Textdateien parsen, und um den vollständigen Pfad zur Binärdatei zu erhalten, muss ich auch den Symlink `/proc/[PID]/exe` lesen. Außerdem bin ich mir nicht sicher, ob das eine plattformübergreifende Lösung ist – unter Windows und macOS gibt es `/proc` nicht.
Bisher sieht mein Code so aus:
```go
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func getProcessName(pid int) (string, error) {
data, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/comm", pid))
if err != nil {
return "", err
}
return string(data), nil
}
func main() {
name, _ := getProcessName(1)
fmt.
```