Wie man Prozess-name von PID mit C
Ich möchte den Namen des Prozesses aus task_struct
, aber
Ich erhalte eine Fehlermeldung, die Dereferenzierung von Zeiger auf unvollständigen Typ (task->DFÜ).
Ich pid_task
Funktion.
Ich habe keine Ahnung warum es nicht funktioniert.
ssize_t simple_read(struct file *filp, char __user *user_buf, size_t count, loff_t *f_pos) {
int len=0;
pid_struct = find_get_pid(pid);
task = pid_task(pid_struct,PIDTYPE_PID);
len = sprintf(user_buf,"\nname %s\n ",task->comm);
return len;
}
- du meinst process name ?
- Ich meine, Prozess-Namen.
- mögliche Duplikate von Voller name des Prozesses von task_struct
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden die task_struct eines Prozesses können wir machen verwenden der Funktion pid_task definiert in kernel/pid.c .
Argumente:
Finden die pid-Struktur, wenn wir die pid von einem Prozess, den wir verwenden können, die functionfind_get_pid die ist auch definiert in kernel/pid.c
Unten In der Modul erstellen wir einen lese/schreib-proc-Eintrag mit dem Namen task_by_pid. Denen je ein Prozess, den wir finden wollen, die task_struct des mit der pid können wir schreiben, um die Anzahl der in der proc-Eintrag.
Wenn wir Lesen, das proc-Eintrag, es wird der name des Prozesses entsprechend der pid-wir schrieben hinein.
proc_task_pid:
Verwenden Sie das folgende make-Datei zu kompilieren:
Legen Sie es in den kernel:
Nun lassen Sie uns versuchen, um den Namen des Prozesses mit der pid "1", das ist immer init.
Wie erwartet die Ausgabe "init". So können wir finden, die task_struct eines Prozesses mit seiner pid.
Source-code von hier.
pid_task
Funktion