哪个PID监听给定的机器端口

use*_*324 6 macos mach

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

ste*_*eve 3

mach 端口不直接与进程关联,而是与任务关联。然后该任务与 bsd 进程结构相关联。要查询任务的端口,您可以使用 mach_port_names 函数。要获取所有打开的马赫端口,请迭代所有任务并使用上述函数。

另一种方法是使用 procfs 文件系统。procfs 文件系统是在 fusion 文件系统之上实现的,需要手动安装在系统上。它是一个开源解决方案。安装 procfs 文件系统后,您可以通过访问文件 /proc/proc-id/task/ports 来查询任务的端口。看看链接