2009-08-26 8 views

Répondre

3

Il fonctionne en tant que root, vous pouvez donc pas le tuer d'un processus régulier par l'utilisateur. Vous allez devoir lui demander de sortir tout seul.

+0

Merci, comment pourrais-je lui demander de sortir gentiment? Je suppose que je pourrais toujours utiliser une autre commande "AuthorizationExecuteWithPrivileges" pour le tuer, mais il serait très incommode pour l'utilisateur d'avoir à entrer un pass administrateur pour fermer le processus ... – indragie

+0

Oui, il le ferait. Vous utiliseriez n'importe quelle forme d'IPC. –

+0

Désolé pour mon ignorance mais qu'est-ce que IPC? J'ai fait des recherches, mais il y a beaucoup de choses différentes que cela pourrait signifier. Merci – indragie

1

Apple a sample code qui utilise stdout pour renvoyer le PID à l'appelant.

1

Utilisez le canal de communication que AuthorizationExecuteWithPrivileges() renvoie par référence dans son dernier argument, FILE **communicationPipe, pour envoyer un message au processus fils qui lui demande de se retirer lui-même et ses descendants. Il peut alors se tuer lui-même et tous ses descendants en utilisant kill(0, SIGINT), ou, si des mesures plus drastiques sont nécessaires, SIGKILL.

Le message que vous utilisez peut être aussi simple que de fermer le fichier pendant que l'enfant attend la fermeture du fichier; à ce moment, il sait que vous avez fini de parler et il est temps de se retirer.

Il existe certaines mises en garde concernant les descendants qui recevront réellement ce message, pour lequel voir la page de manuel . Les avertissements n'auront pas d'importance tant que le processus que vous avez démarré via AEWP n'a pas supprimé de privilèges, bien qu'un problème implicite est que cette approche ne fonctionnera pas si des processus enfants se sont placés dans un nouveau groupe de processus.

Questions connexes