Maison >développement back-end >Golang >Comment puis-je déterminer le PID de l'émetteur d'un signal dans Go ?
Go : récupération de l'origine du signal
Dans Go, capturer des signaux est possible, mais déterminer le PID qui a déclenché un signal peut être difficile.
Limitations de la gestion des signaux
Go gère les gestionnaires de signaux en interne, et il n’existe aucun moyen officiel d’accéder au PID de l’expéditeur du signal. Les informations du signal renvoyées, comme observé dans l'exemple fourni, n'incluent pas ces données.
Approches alternatives
Utilisation d'une méthode alternative de communication, telle que des tuyaux ou des sémaphores , peut être plus adapté dans les cas où la détermination de l'origine du signal est cruciale.
Solution complexe de C
Bien qu'il ne soit pas officiellement pris en charge, il est possible de configurer un gestionnaire de signal personnalisé en C qui peut capturer le PID. Cependant, cette approche est complexe et présente des risques potentiels.
Voici un exemple basé sur une solution proposée par Ian du numéro GitHub 7227 :
package main import ( "C" "os" "syscall" "time" ) func main() { C.test() pid := os.Getpid() for { syscall.Kill(pid, syscall.SIGUSR1) time.Sleep(time.Second) } }
Cet exemple utilise la sigaction de C pour établir un gestionnaire de signal personnalisé, qui imprime le PID de l'expéditeur.
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!