如果我使用 AuthorizationExecuteWithPrivileges 启动一个 shell 脚本,那么杀死脚本和它产生的任何其他进程的最简单方法是什么。
谢谢
如果我使用 AuthorizationExecuteWithPrivileges 启动一个 shell 脚本,那么杀死脚本和它产生的任何其他进程的最简单方法是什么。
谢谢
它以 root 身份运行,因此您无法从常规用户进程中杀死它。您将不得不很好地要求它自行退出。
Apple 有使用标准输出将 PID 传回给调用者的 示例代码。
AuthorizationExecuteWithPrivileges()
使用在其最后一个参数中通过引用返回的通信管道,FILE **communicationPipe
向子进程发送一条消息,要求它把自己和它的后代带出去。然后它可以使用 杀死自己及其所有后代kill(0, SIGINT)
,或者,如果需要更严厉的措施,SIGKILL
。
您使用的消息可以像在孩子等待文件关闭时关闭文件一样简单;到那时,它就知道你已经和它谈完了,是时候把自己拿出来了。
关于实际会收到此消息的后代有一些警告,请参见kill(
2)
联机帮助页。只要您通过 AEWP 启动的进程没有放弃特权,这些警告大多无关紧要,尽管一个隐含的问题是,如果任何子进程将自己置于新的进程组中,这种方法将不起作用。