我的应用程序收到mach IPC消息并返回呼叫者的答案。我有马赫调用者port(msgh_remote_port)
,我想知道调用者的PID
。
我可以通过马赫端口PID
在OSX上找到特定的马赫端口吗?
答案 0 :(得分:2)
mach端口不是与进程直接关联,而是与任务直接关联。然后该任务与bsd进程结构相关联。要查询任务的端口,可以使用mach_port_names函数。要使所有开放的马赫端口迭代所有任务并使用上述功能。
另一种方法是使用procfs文件系统。 procfs文件系统在fuse文件系统之上实现,需要手动安装在系统上。它是一个开源解决方案。安装procfs文件系统后,您可以通过访问文件/ proc / proc-id / task / ports来查询任务的端口。看看http://osxbook.com/book/bonus/chapter11/procfs/。
答案 1 :(得分:0)
谢谢,我在这里找到了做到这一点的方法 - https://web.archive.org/web/20120907161143/http://robert.sesek.com/thoughts/2012/1/debugging_mach_ports.html
答案 2 :(得分:0)
没有kext的三种方法可以做到这一点:
procexp所有端口| grep the_service_name_you_want
(procexp是来自http://NewOSXBook.com/tools/procexp.html的附加工具)