Cocoa 获取XPC进程的负责PID

Cocoa 获取XPC进程的负责PID,cocoa,process,webkit,pid,xpc,Cocoa,Process,Webkit,Pid,Xpc,我试图获取XPC进程的负责进程的PID 例如,Safari的PID为500,正在与com.apple.WebKit.WebContent.xpc的3个实例通信,PID为510、520和530 Activity Monitor.app似乎知道这3个XPC进程与Safari有关。它声称“进程组”是“Safari Web内容” 但这与真正的unix进程组ID无关。GPID不是Safari.app的。事实上,Safari.app甚至不是父级启动的过程 所以问题是-我如何知道com.apple.WebKi

我试图获取XPC进程的负责进程的PID

例如,Safari的PID为500,正在与com.apple.WebKit.WebContent.xpc的3个实例通信,PID为510、520和530

Activity Monitor.app似乎知道这3个XPC进程与Safari有关。它声称“进程组”是“Safari Web内容”

但这与真正的unix进程组ID无关。GPID不是Safari.app的。事实上,Safari.app甚至不是父级启动的过程


所以问题是-我如何知道com.apple.WebKit.WebContent.xpc实例的“负责任”PID(即Safari还是Mail?

应用程序要求通过套接字(NSXPCConnection)启动以加载xpc进程,这就是为什么它被列为父进程的原因。我认为不可能获得真正的发起者的身份,因为他们在一开始就被启动了。不过,我可能错了。您也许可以试试NSXPCListener,看看是否可以镜像Safari/Mail发送的相同消息以启动守护程序。Activity Monitor.app可以这样做,Crash Reporter也可以这样做。使用NSXPCListener并等待每个进程的流量是不可行的。