Используйте канал связи, который AuthorizationExecuteWithPrivileges()
возвращает по ссылке в своем последнем аргументе FILE **communicationPipe
, чтобы отправить сообщение дочернему процессу, который просит его убрать себя и его потомков. Затем он может убить себя и всех своих потомков, используя kill(0, SIGINT)
, или, если требуются более радикальные меры, SIGKILL
.
Используемое вами сообщение может быть таким же простым, как закрытие файла, пока дочерний процесс ожидает закрытия файла; в этот момент он знает, что вы закончили с ним разговаривать, и пришло время убрать себя.
Есть несколько предостережений о потомках, которые фактически получат это сообщение, для которых см. Справочную страницу kill(
2 )
. Предостережения в большинстве случаев не будут иметь значения, если процесс, который вы запустили с помощью AEWP, не утратил привилегии, хотя одна неявная проблема заключается в том, что этот подход не будет работать, если какие-либо дочерние процессы поместят себя в новую группу процессов.