7

我的应用程序接收 mach IPC 消息并为调用者返回答案。我有马赫呼叫者port(msgh_remote_port),我想知道PID呼叫者。我可以通过PID侦听特定马赫端口的马赫端口在 OSX 上找到吗?

4

3 回答 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 的三种方法可以做到这一点:

于 2017-08-02T18:14:06.563 回答