2009-04-16 6 views
1

Ist es möglich, einen Zeiger auf Prozessdeskriptor eines Prozesses in einem Kernelmodul zu bekommen? Wenn es möglich ist, pls post, wie? Ich muss alle Dateien finden, die von einem Prozess und ihren Offset-Werten von jedem Dateideskriptor geöffnet werden.Prozessdeskriptor in Kernelmodulen

Antwort

1

ich es gefunden habe ich den Zeiger Descriptor zu verarbeiten ... die Funktion in Linux/sched.h deklariert wird

struct task_struct find_task_by_pid(pid_t pid) .. Ich denke, ich diesen Prozessdeskriptor zum Dateideskriptors folgen können und ihre Offsets ... Vielen Dank für Ihre Unterstützung

1

Nun, ich weiß nicht, wie man das von einem Kernel-Modul bekommt, aber es gibt viele Möglichkeiten Holen Sie es aus einem normalen Stück Code ... Nicht besonders effizient, das ist. Beginnend an der Art, wie lsof und andere ähnliche Dienstprogramme es tun, und weiter mit einem Blick auf/proc/$ pid/fd

1

Scannen Sie das Proc-Dateisystem nach Prozessen mit offenen Dateideskriptoren suchen. Sie können jedoch keine Offsets in offenen Dateigriffen erkennen.

0

Ich bin mir nicht sicher, was Sie versuchen zu erreichen, in der Regel wird nur alles im Kontext einer bestimmten Prozess-ID ausgeführt. Das ist immer für Sie verfügbar über die "aktuelle" global. Wenn Sie einen beliebigen Prozessdeskriptor finden möchten, dann ist find_task_by_pid wahrscheinlich, was Sie wollen. Alle Prozessinformationen fließen von task_struct.