C 从内核模块终止用户空间程序

C 从内核模块终止用户空间程序,c,linux-kernel,kernel-module,C,Linux Kernel,Kernel Module,我只是想知道是否有办法从内核模块杀死用户空间程序。我知道kill命令不起作用,因为它是从用户空间到内核空间的系统调用。此代码将杀死调用进程 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); i

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

此代码将杀死调用进程

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");
}
int signum=SIGKILL;
任务=当前任务;
结构siginfo信息;
memset(&info,0,sizeof(struct siginfo));
info.si_signo=signum;
int ret=发送信号信息(信号和信息,任务);
如果(ret<0){
printk(KERN_INFO“发送信号时出错”);
}
你可以看到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");
}
int signum=SIGKILL;
任务=当前任务;
结构siginfo信息;
memset(&info,0,sizeof(struct siginfo));
info.si_signo=signum;
int ret=发送信号信息(信号和信息,任务);
如果(ret<0){
printk(KERN_INFO“发送信号时出错”);
}
你可以看到OOM杀手是怎么做到的


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


这是另一个可怕的大学作业吗?

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


这是不是又一个糟糕的大学作业?

如果我知道用户空间程序的名称,例如“xyz”,我想从内核模块向该进程发送一个信号。看起来上面的代码终止了当前进程。您需要找到
任务
,然后向其发送信号。如果我知道用户空间程序的名称,例如“xyz”,我想从内核模块向该进程发送信号。看起来上面的代码终止了当前进程。您需要找到
任务
,然后向其发送信号。