Capturer des signaux dans Golang
Dans certains scénarios, vous devrez peut-être implémenter un wrapper de processus dans Golang qui surveille et capture les signaux générés par un processus lancé. Le wrapper de processus doit lancer le processus et gérer des signaux tels que SIGKILL et SIGTERM.
Lancement du processus
Pour lancer le processus, vous pouvez utiliser la fonction syscall.Exec . Cette fonction permet d'exécuter une commande et de rediriger ses flux d'entrée et de sortie. Voici un exemple :
func launchCmd(path string, args []string) { err := syscall.Exec(path, args, os.Environ()) if err != nil { panic(err) } }
Capturer des signaux
Dans Go, vous pouvez utiliser le package de signaux pour capturer les signaux envoyés à votre processus. La fonction signal.Notify vous permet d'enregistrer un canal qui recevra des notifications pour les signaux spécifiés. Par exemple :
sigc := make(chan os.Signal, 1) signal.Notify(sigc, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) go func() { s := <-sigc // ... do something ... }()
Dans ce code, sigc est un canal qui recevra les signaux des types de signaux spécifiés. Vous pouvez utiliser une instruction select pour écouter les signaux sur ce canal et effectuer les actions appropriées.
Notes supplémentaires
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!