![我怎样才能终止内核中的进程?](https://linux22.com/image/1010216/%E6%88%91%E6%80%8E%E6%A0%B7%E6%89%8D%E8%83%BD%E7%BB%88%E6%AD%A2%E5%86%85%E6%A0%B8%E4%B8%AD%E7%9A%84%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
我对内核开发很感兴趣,正在尝试找到一种终止和杀死进程的方法。我唯一知道的是该进程的 pid 和任务描述符值。
换句话说,如何使用内核中的 pid 或指向其 task_struct 的指针来终止进程?
答案1
您可以参考的代码是 mm/oom_kill.c 中的 oom killer
https://github.com/torvalds/linux/blob/master/mm/oom_kill.c
这是当系统内存不足时,内核会选择杀死某个进程的机制。
Android LMK比较简单,使用send_sig。 https://android.googlesource.com/kernel/arm64/+/android-9.0.0_r0.32/drivers/staging/android/lowmemorykiller.c
或者您可以使用
int kill_pid(struct pid *pid, int sig, int priv)
函数。