Tuer les exécutables après la fin du processus dans Go
Lors de l'exécution d'exécutables séparés dans les threads Golang, il est crucial de s'assurer que ces exécutables sont terminés au moment du lancement. processus principal étant tué. Cela peut résulter des actions des utilisateurs ou d'autres facteurs externes.
Solution :
Il existe deux approches principales pour y parvenir :
1 . Terminaison du groupe de processus :
Créez un processus enfant dans le même groupe de processus que le processus principal. Lorsque le processus principal est tué, l'ensemble du groupe de processus, y compris l'exécutable enfant, sera terminé.
2. Appel système Pdeathsig :
Utilisez la fonction syscall.SetProcAttr pour définir l'attribut Pdeathsig pour le processus enfant. Cet attribut détermine le signal qui sera envoyé au processus enfant à la fin du processus parent. En le définissant sur une valeur telle que syscall.SIGTERM, vous pouvez vous assurer que le processus enfant se termine proprement.
Exemple :
cmd := exec.Command("./long-process") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
Considérations supplémentaires :
En mettant en œuvre ces approches, vous pouvez garantir que tous les exécutables appelés par votre processus Golang sont tués lorsque le processus lui-même est terminé, ce qui permet pour une terminaison propre des processus et la prévention des processus orphelins.
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!