Wie kann ich einen Prozess im Kernel beenden?

Wie kann ich einen Prozess im Kernel beenden?

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

  1. 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.

  2. 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

  3. Oder Sie können int kill_pid(struct pid *pid, int sig, int priv)die Funktion verwenden.

verwandte Informationen