2017-11-13 24 views
1

처음에는 OS X/macOS 용 커널 모듈에서 getpid()을 사용하려고했는데 커널에서 kext가 실행되는 프로세스의 PID (프로세스 ID)를 가져 오는 방법이 있습니까? 사용할 수있는 기존 함수 또는 변수가 있습니까?Mac 커널 확장 코드에서 현재 프로세스 ID를 어떻게 얻습니까?

+0

https://stackoverflow.com/questions/41676/is-there-a-way-of-getting-the-process-id-of-my-c-application을 참조하십시오. 그것은 unistd.h에서 사용 가능합니다. – mattias

+0

@AndrewHenle 왜 내가 당신이 이미 이것을 게시하고 도서관에 너무 많이 파 묻을 것이라고 생각합니까? #facepalm – Anurag

+1

[Google에서 "getpid() on mac"] (https://www.google. com/search? q = getpid() + on + mac)는 맨 처음의 결과 [Mac'getpid (2)'맨 페이지]를 반환합니다. (http://www.manpages.info/macosx/getpid.2.html) 당신의 질문에'#include '과'#include '이 둘 다 필요하다는 것을 분명하게 알려줍니다. #facepalm 참으로. –

답변

1

현재 실행중인 커널 스레드가 연결된 프로세스의 PID를 가져 오려면 proc_selfpid() function을 호출하십시오. 프로토 타입을 얻으려면 kext 코드에 #include <sys/proc.h>이 필요합니다. PID는 시스템 콜에 대한 일종의 콜백 컨텍스트에서 코드가 실행되고있는 경우에만 물론 사용자 프로세스에 해당합니다.