Ich frage mich nur, ob es eine Möglichkeit gibt, ein Userspace-Programm von einem Kernel-Modul zu töten. Ich weiß, dass der Befehl kill nicht funktioniert, da es ein Systemaufruf von Userspace zu Kernelraum ist .Killing ein Userspace-Programm von einem Kernel-Modul
1
A
Antwort
3
Dieser Code wird den aufrufenden Prozess töten ...
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");
}
Sie sehen können, wie die OOM Killer es hier tut ...
http://lxr.free-electrons.com/source/mm/oom_kill.c?v=3.16#L516
0
Wenn Sie wissen, was syscall sein kann verwendet von Userspace, um Signale zu liefern, warum können Sie nicht überprüfen, wie es implementiert ist? Was aber noch wichtiger ist, warum müssen Sie überhaupt ein Signal senden? Wie bestimmen Sie, was Sie zuerst signalisieren sollen?
Ist das eine andere schreckliche College-Aufgabe?
http://www.linuxquestions.org/questions/linux-kernel-70/how-to-send-a-signal-from-a-module-to-a-process-803485/ – vestlen