我的应用程序接收 mach IPC 消息并为调用者返回答案。我有马赫呼叫者port(msgh_remote_port)
,我想知道PID
呼叫者。我可以通过PID
侦听特定马赫端口的马赫端口在 OSX 上找到吗?
问问题
2811 次
3 回答
3
mach 端口不直接与进程相关联,而是与任务相关联。然后将该任务与 bsd 进程结构相关联。要查询任务的端口,您可以使用 mach_port_names 函数。要获取所有打开的 mach 端口,请遍历所有任务并使用上述功能。
另一种方法是使用 procfs 文件系统。procfs 文件系统是在 fuse 文件系统之上实现的,需要在系统上手动安装。这是一个开源解决方案。安装 procfs 文件系统后,您可以通过访问文件 /proc/proc-id/task/ports 来查询任务的端口。看看http://osxbook.com/book/bonus/chapter11/procfs/。
于 2012-02-19T21:09:51.003 回答
0
谢谢,我在这里找到了方法 - https://web.archive.org/web/20120907161143/http://robert.sesek.com/thoughts/2012/1/debugging_mach_ports.html
于 2012-02-22T15:06:03.577 回答
0
没有 kext 的三种方法可以做到这一点:
- launchctl 打印系统(或其他域)
- lsmp -a (没有端口名称,只有 id)
procexp 所有端口 | grep the_service_name_you_want
于 2017-08-02T18:14:06.563 回答