2013-03-02 9 views
5

ユーザスペースのアプリケーション/プロセスが強制終了されたときに起動されるLinuxカーネルモジュールで使用できるフックがあるのでしょうか?ユーザスペースプロセス上のLinuxカーネルモジュールのシグナルが抹消

+0

特定のプロセスまたはすべてのプロセスのみですか?特定のシグナルを受け取っているプロセスに興味がありますか、プロセスは正常に終了していますか? – Tuxdude

+1

** ARM **、 '#include 'および 'thread_register_notifier()'。 'THREAD_NOTIFY_EXIT'を使用してください。参照:https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/include/asm/thread_notify.h –

+0

@Tuxdude:これはすべてのプロセスと任意の信号。私のケースでは、私のカーネルモジュールはPIDに基づいていくつかのデータを保存しています。プロセスが終了すると、すぐに消去する必要があります。 – ZedTuX

答えて

2

カーネルモジュール内のノーティファイヤチェーンに最初に登録することができます。

get_signal_to_deliverカーネル/ signal.c)、そのPF_SIGNALEDフラグが設定された殺されだけ(このこと相対用語私見)を有する任意のプロセス内。ここでは、そのようにそのtcommフィールドを使用して現在プロセスの名前をチェックすることもできます

char tcomm[sizeof(current->comm)]; 
get_task_comm(tcomm, current); 

それは確かに疑問の下でのプロセスである場合は、あなただけの持っているあなたのモジュールを呼び起こします通知チェーンを発射できその鎖を待っていた。

+0

ありがとう!私はこれを見ます! – ZedTuX

関連する問題