どのユーザーが終了信号を送信したかをキャプチャ

どのユーザーが終了信号を送信したかをキャプチャ

管理者権限を持つ他のユーザーがそのスクリプトを使用しようとしている間、休止状態に移行するスクリプトを実行しているとしますpkill。可能であれば、そのシグナルを自分のプロセスに送信したユーザーをどのようにキャプチャできますか?

kill -9 <my_script>SIGKILLでは何もキャプチャまたは実行できないため、このような機能では何もキャプチャできないことがわかります。

ベストアンサー1

はい、可能です。スクリプトではないかもしれません。これを行うには、次のように信号ハンドラを設定する必要があります。sigactionフラグを使用しSA_SIGINFO、同じ署名付きハンドラーを提供します。

void handler(int sig, siginfo_t *info, void *ucontext)

信号を処理するために呼び出されたときに2番目の引数として受け取るポインタには、送信siginfo_tプロセスのプロセス識別子()、送信プロセスの読み取りユーザー識別子()などの情報が含まれます。送信された信号を使用するために入力されます。info->si_pidinfo->si_uidkillまたはsigqueue

これをPythonとして実装するには多くの作業が必要です。信号モジュール構造にアクセスする方法は提供されていませんsiginfo_t

おすすめ記事