Ich versuche, einen Systemaufruf zu entwickeln, der in der Lage ist, pid als Argument zu empfangen, die pid zu beenden und im Kernel-Protokoll zu drucken. Bisher habe ich den folgenden Code, aber ich erhalte diesen Fehler, wenn ich versuche, den Kernel zu kompilieren. Wie behebe ich das? Und gibt es eine Möglichkeit, den Benutzernamen zu finden, der die PID getötet hat, die in diesem Fall getötet werden soll?
kill_log / kill_log.c: 2: 24: schwerwiegender Fehler: signal.h: Keine solche Datei- oder Verzeichniskompilierung wurde beendet. scripts / Makefile.build: 289: Rezept für Ziel 'kill_log / kill_log.o' fehlgeschlagen make [1]: * [kill_log / kill_log.o] Fehler 1 Makefile: 968: Rezept für Ziel 'kill_log' fehlgeschlagen make: * [kill_log ] Fehler 2
#include <linux/kernel.h>
#include <signal.h>
asmlinkage long sys_kill_log(pid_t pid)
{
kill(pid, SIGUSR1);
printk(KERN_WARNING "The process %d has been killed\n", pid);
return 0;
}
Aufgrund Ihrer Fehlermeldung fehlen Sie signal.h
. Auf Debian-basierten Systemen müssten Sie installieren libc6-dev
.
Wenn Sie den Benutzernamen abrufen möchten, können Sie dies versuchen getpwuid
.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen