2012-02-19 64 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工具上的補充)