2012-02-19 1 views
6

私のアプリケーションはマッチしたIPCメッセージを受信し、発信者の回答を返します。私はマッハの発信者port(msgh_remote_port)を持っていて、私は発信者のPIDを知りたいです。 OSXでmachポートを見つけることができますかPID特定のMachポートを聞きますか?特定のマッハポートで受信したPIDはどれですか

答えて

2

machポートは、プロセスに直接関連付けられるのではなく、タスクに関連付けられます。タスクは、bsdプロセス構造に関連付けられます。タスクのポートを照会するには、mach_port_names関数を使用します。すべてのオープンマッハポートを取得するには、すべてのタスクを繰り返し実行し、前述の機能を使用します。

別のアプローチは、procfsファイルシステムを使用することです。 procfsファイルシステムはヒューズファイルシステムの上に実装されており、システムに手動でインストールする必要があります。これはオープンソースのソリューションです。 procfsファイルシステムがインストールされたら、/ proc/proc-id/task/portsファイルにアクセスして、タスクのポートを照会することができます。 http://osxbook.com/book/bonus/chapter11/procfs/をご覧ください。

0

3つの方法:

  • にlaunchctlプリントシステム(または別のドメイン)
  • lsmp -a (ポート名なし、idsのみ)
  • procexp all ports | grepのthe_service_name_you_want

(procexpが http://NewOSXBook.com/tools/procexp.htmlからツールに追加しています)
関連する問題