In meinem Go-Programm muss ich top
ausführen, um einen bestimmten Prozess kontinuierlich zu überwachen. Aber top
gibt mir nicht den Zeitstempel, wenn jede Zeile aufgezeichnet wird. Ich denke an das Voranstellen es an die Ausgänge mein Selbst:Go: Inhalt den Ausgaben von oben voranstellen
top := exec.Command("top", "-p", pid)
r, w := os.Pipe()
top.Stdout = w
top.Start()
So kann ich die Ausgänge von r
an einem Ende des Rohres lesen kann. Ich frage mich, wie kann ich eine Aktion auslösen, um den aktuellen Zeitstempel zu bekommen und es der Ausgabe voranzustellen, wenn es eine neue Zeile von top.Stdout
gibt? Ich denke, es sollte wie ein Callback oder Pythons Generator sein, aber ich bin mir nicht sicher, wie ich es in Go machen soll.
Es scheint, dass 'for' Schleife innerhalb der Goroutine für immer läuft? Wenn ich 'top.Process.Signal (os.Kill)' habe, wie kann ich dann diese goroutine stoppen? Vielen Dank. –
@JFreebird 'sc.Scan()' gibt false zurück, da der Leser 'io.EOF' zurückgibt und es beendet wird. – OneOfOne