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

时间:2016-04-12 19:03:37

标签: c linux-kernel kernel-module

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

2 个答案:

答案 0 :(得分:4)

此代码将终止调用进程...

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");
}

你可以看到OOM杀手如何做到这一点......

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

答案 1 :(得分:0)

如果您知道用户空间可以使用哪些系统调用来传递信号,为什么不能检查它是如何实现的呢?更重要的是,为什么你认为你需要首先发送信号?你如何确定首先发出信号的是什么?

这是另一个超越可怕的大学任务吗?

相关问题