使用AuthorizationExecuteWithPrivileges启动后终止进程

时间:2009-08-26 16:13:58

标签: objective-c cocoa shell authorization kill

如果我使用AuthorizationExecuteWithPrivileges启动了一个shell脚本,那么最简单的方法就是杀死脚本以及它产生的任何其他进程。

由于

3 个答案:

答案 0 :(得分:3)

它以root身份运行,因此您无法从常规用户进程中删除它。你将不得不自己要求退出。

答案 1 :(得分:1)

Apple有sample code使用stdout将PID传递给调用者。

答案 2 :(得分:1)

使用AuthorizationExecuteWithPrivileges()在其最后一个参数FILE **communicationPipe中通过引用返回的通信管道向子进程发送一条消息,要求它将自己及其后代移出。然后它可以使用kill(0, SIGINT)来杀死自己及其所有后代,或者,如果需要更严厉的措施,SIGKILL

您使用的消息可以像孩子等待文件关闭时关闭文件一样简单;在这一点上,它知道你已经完成了与之交谈,现在是时候把它自己拿出来了。

有一些关于实际会收到此消息的后代的警告,请参阅kill( 2 )联机帮助页。只要您通过AEWP启动的进程没有删除权限,这些注意事项通常无关紧要,尽管一个隐含的问题是如果任何子进程将自己置于新的进程组中,这种方法将无效。