AuthorizationExecuteWithPrivilegesを使用してシェルスクリプトを起動した場合、スクリプトとそれが生成した他のプロセスを強制終了する最も簡単な方法は何でしょうか。
ありがとう
AuthorizationExecuteWithPrivilegesを使用してシェルスクリプトを起動した場合、スクリプトとそれが生成した他のプロセスを強制終了する最も簡単な方法は何でしょうか。
ありがとう
ルートとして実行されているため、通常のユーザー プロセスからは強制終了できません。うまく終了するように依頼する必要があります。
Apple には、stdout を使用して PID を呼び出し元に戻す サンプル コードがあります。
AuthorizationExecuteWithPrivileges()
最後の引数 で参照によって返される通信パイプを使用しFILE **communicationPipe
て、子プロセスにメッセージを送信し、それ自体とその子孫を取り出すように要求します。次に、 を使用して自身とそのすべての子孫を殺すkill(0, SIGINT)
か、より抜本的な対策が必要な場合はSIGKILL
.
使用するメッセージは、子供がファイルが閉じるのを待っている間にファイルを閉じるのと同じくらい簡単です。その時点で、あなたとの会話が終わったことを認識し、自分自身を取り除く時が来ました。
このメッセージを実際に受け取る子孫については、いくつかの注意事項があります。これについては、kill(
2の)
マンページを参照してください。AEWP を介して開始したプロセスが特権を削除していない限り、注意事項はほとんど問題になりませんが、暗黙の問題の 1 つは、子プロセスが新しいプロセス グループに配置されている場合、このアプローチが機能しないことです。