2016-04-12 7 views
1

カーネルモジュールからユーザースペースプログラムを削除する方法があるかどうかは疑問です。killコマンドは、ユーザースペースからカーネルスペースへのシステムコールでは機能しません。カーネルモジュールからユーザー空間プログラムを強制終了する

+0

http://www.linuxquestions.org/questions/linux-kernel-70/how-to-send-a-signal-from-a-module-to-a-process-803485/ – vestlen

答えて

3

あなたがOOMキラーはここにそれをしない方法を見ることができます

int signum = SIGKILL; 
task = current; 
struct siginfo info; 
memset(&info, 0, sizeof(struct siginfo)); 
info.si_signo = signum; 
int ret = send_sig_info(signum, &info, task); 
if (ret < 0) { 
    printk(KERN_INFO "error sending signal\n"); 
} 

呼び出し元のプロセスをkillします。このコードは... ...

http://lxr.free-electrons.com/source/mm/oom_kill.c?v=3.16#L516

+0

私が知っていればユーザー空間プログラムの名前、例えば "xyz"、カーネルモジュールからそのプロセスにシグナルを送りたい。上記のコードが現在のプロセスを強制終了するように見えます。 – hmdb

+0

あなたは 'task'を見つけてそれにシグナルを送る必要があります。 – Harry

0

あなたはどのようなシステムコールをすることができわかっている場合ユーザー空間で信号を送信するために使用されていますが、なぜ実装されているか確認できませんか?しかしもっと重要なのは、なぜあなたは最初に信号を送る必要があると思いますか?最初に何を伝えるべきかをどうやって決めるのですか?

これは別のひどい大学の割り当てを超えていますか?

関連する問題