2012-02-19 69 views
6

我的应用程序收到马赫IPC消息并为调用者返回答案。我有马赫呼叫者port(msgh_remote_port),我想知道调用者的PID。 我可以在OSX上找到机械接口的一个PID这个接口用于监听特定的马达端口吗?哪个PID监听给定的马赫数端口

回答

2

mach端口不直接与进程关联,而是与任务关联。然后该任务与bsd进程结构关联。要查询任务的端口,可以使用mach_port_names函数。为了让所有开放的机器端口迭代所有任务并使用上述功能。

另一种方法是使用procfs文件系统。 procfs文件系统是在熔丝文件系统的顶部实现的,需要手动安装在系统上。这是一个开源解决方案。安装procfs文件系统后,您可以通过访问文件/ proc/proc-id/task/ports来查询任务的端口。看看http://osxbook.com/book/bonus/chapter11/procfs/

0

三种方法可以做到这一点没有一个KEXT:

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

    (procexp是从http://NewOSXBook.com/tools/procexp.html工具上的补充)