我的应用程序接收mach IPC消息,并为调用者返回应答。我有mach调用者port(msgh_remote_port),我想知道调用者的PID。我能在OSX上通过mach端口找到一个监听特定mach端口的PID吗?
发布于 2012-02-20 05:09:51
mach端口并不直接与进程相关联,而是与任务相关联。然后将该任务与bsd流程结构相关联。要查询任务的端口,可以使用mach_port_names函数。要获得所有打开的mach端口,请迭代所有任务并使用上面提到的函数。
另一种方法是使用procfs文件系统。procfs文件系统是在fuse文件系统之上实现的,需要在系统上手动安装。它是一个开源的解决方案。一旦安装了procfs文件系统,就可以通过访问文件/proc/proc-id/ task /ports来查询任务的端口。看看http://osxbook.com/book/bonus/chapter11/procfs/吧。
发布于 2012-02-22 23:06:04
发布于 2017-08-03 02:14:07
有三种方法可以在不使用kext的情况下完成此操作:
(procexp是http://NewOSXBook.com/tools/procexp.html)的一个附加工具
https://stackoverflow.com/questions/9347665
复制相似问题