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

时间:2012-02-19 08:04:34

标签: macos mach

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

3 个答案:

答案 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)

答案 2 :(得分:0)

没有kext的三种方法可以做到这一点:

  • launchctl打印系统(或其他域名)
  • lsmp -a(没有端口名称,只有ID)
  • procexp所有端口| grep the_service_name_you_want

    (procexp是来自http://NewOSXBook.com/tools/procexp.html的附加工具)