Tuez les exécutables enfants lors de la terminaison du processus parent dans Go
Lors de l'exécution d'exécutables externes à partir d'un processus Go à l'aide du package exec, assurez-vous que le les exécutables générés sont tués lorsque le processus parent se termine peut être un problème critique préoccupation.
Problème :
Si le processus Go parent est interrompu de force (par exemple, via une interruption utilisateur ou une panne du système), les exécutables enfants peuvent continuer à s'exécuter, pouvant entraîner des conséquences inattendues ou nuire à la sécurité risques.
Solution :
Il existe deux approches principales pour gérer cette situation :
Démarrez l'exécutable enfant dans le même groupe de processus que le processus parent. Lorsque le processus parent est tué, l'ensemble du groupe de processus est terminé, y compris l'exécutable enfant.
cmd := exec.Command("child_executable") cmd.SysProcAttr = &syscall.SysProcAttr{ Setpgid: true, }
Définissez le champ Pdeathsig dans la structure SysProcAttr de la commande de processus enfant pour spécifier le signal qui sera envoyé à l'enfant lors de la commande du parent. terminaison.
cmd := exec.Command("child_executable") cmd.SysProcAttr = &syscall.SysProcAttr{ Pdeathsig: syscall.SIGTERM, }
Considérations 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!