Signale in Golang abfangen
In einigen Szenarien müssen Sie möglicherweise einen Prozess-Wrapper in Golang implementieren, der von einem generierte Signale überwacht und abfängt eingeleiteter Prozess. Der Prozess-Wrapper sollte den Prozess starten und Signale wie SIGKILL und SIGTERM verarbeiten.
Starten des Prozesses
Um den Prozess zu starten, können Sie die Funktion syscall.Exec verwenden . Mit dieser Funktion können Sie einen Befehl ausführen und seine Eingabe- und Ausgabeströme umleiten. Hier ist ein Beispiel:
func launchCmd(path string, args []string) { err := syscall.Exec(path, args, os.Environ()) if err != nil { panic(err) } }
Signale abfangen
In Go können Sie das Signalpaket verwenden, um an Ihren Prozess gesendete Signale abzufangen. Mit der signal.Notify-Funktion können Sie einen Kanal registrieren, der Benachrichtigungen für die angegebenen Signale erhält. Zum Beispiel:
sigc := make(chan os.Signal, 1) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { s := <-sigc // ... do something ... }()
In diesem Code ist sigc ein Kanal, der Signale von den angegebenen Signaltypen empfängt. Sie können eine Select-Anweisung verwenden, um auf Signale auf diesem Kanal zu warten und die entsprechenden Aktionen auszuführen.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich Signale von einem gestarteten Prozess in Go abfangen und verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!