1

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

谢谢

4

3 回答 3

3

它以 root 身份运行,因此您无法从常规用户进程中杀死它。您将不得不很好地要求它自行退出。

于 2009-08-26T17:10:12.927 回答
1

Apple 有使用标准输出将 PID 传回给调用者的 示例代码。

于 2009-09-01T01:49:25.617 回答
1

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

您使用的消息可以像在孩子等待文件关闭时关闭文件一样简单;到那时,它就知道你已经和它谈完了,是时候把自己拿出来了。

关于实际会收到此消息的后代有一些警告,请参见kill(2)联机帮助页。只要您通过 AEWP 启动的进程没有放弃特权,这些警告大多无关紧要,尽管一个隐含的问题是,如果任何子进程将自己置于新的进程组中,这种方法将不起作用。

于 2009-09-03T19:04:41.817 回答