Befehl in Golang ausführen und vom Prozess trennen
Dieses Problem tritt auf, wenn Sie einen lang laufenden Prozess in Golang ausführen müssen spezifische Anforderungen wie:
Ihr Lösungsversuch mit Cmd.Start() und Cmd.Wait() erfüllt die meisten dieser Anforderungen, außer dass der zugrunde liegende Prozess nicht abstürzt, wenn Sie SIGTERM/SIGKILL an Ihr Programm senden.
Lösung
Anstatt zu versuchen, das Rad neu zu erfinden, Erwägen Sie die Verwendung einer der folgenden Bibliotheken:
Go-reap-Bibliothek
Eine empfohlene Lösung ist die Verwendung der https://github.com/hashicorp/go-reap-Bibliothek.
Hinweise
Haftungsausschluss
Die bereitgestellte Lösung konzentriert sich auf das Problem, zu verhindern, dass der Unterprozess zu einem Zombie wird. Für eine Komplettlösung, die alle Anforderungen erfüllt, kann eine Kombination verschiedener Ansätze erforderlich sein.
Das obige ist der detaillierte Inhalt vonWie kann man lang laufende Prozesse in Golang ausführen und verhindern, dass sie zu Zombies werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!