2017-11-13 9 views
1

Ich habe ursprünglich versucht, getpid() in meinem Kernel-Modul für OS X/MacOS zu verwenden, gibt es eine Möglichkeit, die PID (Prozess-ID) des Prozesses, in dem Kontext meine Kext im Kernel ausgeführt wird? Gibt es eine vorhandene Funktion oder Variable, die ich verwenden kann?Wie erhalten Sie die aktuelle Prozess-ID im Mac-Kernel-Erweiterungscode?

+0

Siehe https://stackoverflow.com/questions/41676/is-there-a-way-of-getting-the-process-id-of-my-c-application. Es ist verfügbar in unistd.h. – mattias

+0

@AndrewHenle Warum würdest du denken, werde ich dies posten und so viel in die Bibliotheken graben, wenn ich es noch nicht googeln konnte #facepalm – Anurag

+1

Weil [Google nach "getpid() auf Mac" sucht] (https://www.google. com/search? q = getpid() + on + mac) liefert als erstes Ergebnis [die Mac 'getpid (2)' man-Seite] (http://www.manpages.info/macosx/getpid.2.html)) die eindeutig besagt, dass Sie '#include ' und '#include ' brauchen, von denen keiner in Ihrer Frage erwähnt wird. #facepalm tatsächlich. –

Antwort

1

Um die PID des Prozesses zu erhalten, mit dem der aktuell laufende Kernel-Thread verknüpft ist, rufen Sie die proc_selfpid() function; Sie müssen #include <sys/proc.h> in Ihrem Kext-Code, um den Prototyp zu erhalten. Die PID wird natürlich nur einem Benutzerprozess entsprechen, wenn der Code im Kontext einer Art Callback für einen Syscall ausgeführt wird.

Verwandte Themen