
Ich interessiere mich für Kernel-Entwicklung und versuche, einen Weg zu finden, einen Prozess zu beenden und abzubrechen. Das Einzige, was ich kenne, sind die PID und der Task-Deskriptorwert dieses Prozesses.
Mit anderen Worten: Wie kann ich einen Prozess beenden, indem ich seine PID oder einen Zeiger auf seine Task-Struktur im Kernel verwende?
Antwort1
Der Code, auf den Sie verweisen könnten, ist oom killer unter mm/oom_kill.c
https://github.com/torvalds/linux/blob/master/mm/oom_kill.c
Dies ist der Mechanismus, bei dem der Kernel einen Prozess zum Beenden auswählt, wenn der Systemspeicher voll ist.
Android LMK ist relativ einfacher. Es verwendet send_sig. https://android.googlesource.com/kernel/arm64/+/android-9.0.0_r0.32/drivers/staging/android/lowmemorykiller.c
Oder Sie können
int kill_pid(struct pid *pid, int sig, int priv)
die Funktion verwenden.