2014-06-17 10 views
7

응용 프로그램 프로세스가 XPC 도우미 프로세스를 시작하면 실제로는 고전적인 UNIX 스타일에서 fork()/exec() 자체를 수행하지 않습니다. 대신 launchd에 메시지를 보내면 더러운 일을합니다. 따라서 XPC 프로세스에서 상위 프로세스를 쿼리하면 실행 프로세스로 돌아옵니다.OSX Activity Monitor는 XPC 작업을 이니시에이터 프로세스와 어떻게 일치합니까?

그러나 계층 프로세스보기에서 열려 활동 모니터의 XPC 도우미 프로세스는 모든 예를 들어, 그들에게 요청한 원래 응용 프로그램 아래에 표시하는 경우 : 난 소프트웨어에서

Example of XPC helper for Safari showing launchd as parent process

작업 과정에서 이러한 관계를 아는 것이 매우 유용 할 것입니다. 지금까지 우리는 정규 BSD 부모 프로세스 정보를 사용 해왔다. 그러나 모든 것이 XPC로 옮겨 감에 따라, 이것은 더 이상 쓸모가 없다.

그래서 :

  • 경우 XPC 프로세스에 저장된 "원래"부모 프로세스 정보가?
  • 액티비티 모니터는 어떻게 액티비티에 액세스합니까?

kext가 관련되어 있으므로이 정보를 사용자 공간이 아닌 커널에서 직접 가져올 수는 있지만, 저장 위치를 ​​파악할 수는 없습니다.

업데이트 : 애플의 다윈 커널 메일 링리스트에 토론 : http://lists.apple.com/archives/darwin-kernel/2015/Mar/msg00001.html

+1

+1이 사이트에 흥미로운 질문이 한번 있습니다. – trojanfoe

+0

나는 이것을 해결하려고 노력해왔다! – TheDarkKnight

답변

0

내가 그 launchd에 상상은 당신이 찾고있는 것을 알고있다.

서비스 관리 프레임 워크에는 찾고자하는 것을 제공 할 수있는 방법이 있습니다.

CFDictionaryRef SMJobCopyDictionary(CFStringRef domain, CFStringRef jobLabel); 기능.

+0

OSX 사전 출시 문서에서 요세미티 (10.10)에서 해당 기능이 더 이상 사용되지 않을 수 있습니다. https://developer.apple.com/library/prerelease/mac/documentation/ServiceManagement/Reference/ServiceManagement_header_reference/index .html # // apple_ref/c/func/SMJobCopyDictionary – TheDarkKnight

+2

SMJobCopyDictionary가 도움이 될 것 같지 않습니다. 보시다시피, 다음은 Safari 용 사전 항목입니다. http://pastebin.com/QAgDEUim – TheDarkKnight

+0

그래, 나는 그 기능에 많은 행운이 없다. – pmdj