2009-10-03 5 views
0

Je souhaite un appel de fonction alternative pour que setpgid appelle un processus ayant exécuté l'appel à exec(). setpgid renvoie une erreur si elle est appelée sur un enfant qui a déjà appelé exec. Y a-t-il une autre fonction?Appel de setpgid sur un processus enfant UNIX

Répondre

1

Après une exécution réussie, le groupe de processus ne peut être modifié que par le processus lui-même. Le moyen le plus simple de le changer d'un autre processus, si l'enfant coopère, serait d'utiliser un mécanisme de communication de pipe ou d'interprocessus pour demander à l'enfant de changer son propre groupe de processus. Une autre alternative consisterait à attacher au processus enfant (par exemple avec ptrace, gdb ou un mécanisme spécifique au système d'exploitation) et exécuter l'appel système setpgid() à partir du contexte du processus fils. D'autres alternatives, comme un nouveau module de noyau ou une modification de la mémoire du noyau, nécessitent des capacités de système racine ou spéciales et sont susceptibles d'être bien pires que les autres approches.

Questions connexes