0
まあ、カーネルを修正し、SIGNAL(#define SIGHELLO 33)を定義してキャッチします(printk "lalalalala"としましょう)。私はどこを定義するのか知っていますが、それを捕まえることはできません。 (プログラムが未知の信号を出力して終了する)どこに注入するのかわからない。誰かが知っていることを望みます。シグナルを定義してlinuxカーネルコードでキャッチする方法
まあ、カーネルを修正し、SIGNAL(#define SIGHELLO 33)を定義してキャッチします(printk "lalalalala"としましょう)。私はどこを定義するのか知っていますが、それを捕まえることはできません。 (プログラムが未知の信号を出力して終了する)どこに注入するのかわからない。誰かが知っていることを望みます。シグナルを定義してlinuxカーネルコードでキャッチする方法
信号の目的と処理が混乱するようです。 2つの特別な例外(SIGKILLとSIGSTOP/SIGTSTP)で、シグナルはカーネル内で特別な処理を受けません。 (彼らはsignal()
などを使用してユーザ空間でキャッチすることができる。)
言われているので、信号処理はkernel/signal.c
です。私は、このファイルの動作がカーネルモジュールによって変更できるとは思わない。
私がしようとしていることは、少し異なります。カーネル内のあるプロセスから別のプロセスにシグナルを送りたい。他のプロセスが信号を受信すると、何か処理が行われます。私はSIGUNUSEDが助けになるかもしれないと思う。 – Nova
カーネル内で生成され処理される場合、なぜシグナルが関与する必要がありますか?信号の動作を直接行うことができない何らかの理由はありますか? – duskwuff
スケジューラがそのプロセスに切り替わるときに、プロセスのプロセス空間情報とCPU状態を追跡したいとします。これは、私がそれを追跡したいときはいつでも、私は別のプロセスでシステムコールを実行し、そのプロセスをそのターゲットプロセスに留意させることを意味します。それがSIGNALがここに関わっている理由です。 – Nova