从内核模块杀死用户空间程序

hmd*_*mdb 1 c kernel-module linux-kernel

我只是想知道是否有一种方法可以从内核模块杀死用户空间程序。我知道kill命令不起作用,因为它是从用户空间到内核空间的系统调用。

Har*_*rry 5

这段代码将杀死调用进程......

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");
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到 OOM 杀手是如何做到的......

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