Mac OS X(パイプ、ソケット、System V IPCなど)で使用可能なさまざまなIPCメカニズムを比較しています。Machポートが、レベルの選択肢。しかし、私は非常に基本的な問題に直面しました。つまり、プロセス間の(特に、親プロセスと子プロセスの)ポート間での送信権の取得です。子プロセスを持つMachポートを共有する
ファイル記述子とは異なり、ports are generally not carried over to forked processes。これは、それらを転送する他の方法が確立されなければならないことを意味します。私が見つけた唯一の関連するページはthis oneであり、その方法はsuggested by an Apple engineer in 2009であったにもかかわらず、彼らのメソッドはもはや機能しなくなり、決して保証されていなかったという更新を述べています。 (これはブートストラップポートを置き換えることを暗示していましたが、これでXPCが破られてしまいます)。彼らが推奨する置換えは廃止された関数を使用しているので、それはあまり魅力的な解決策ではありません。
さらに、私が古いソリューションについて気に入っていたことの1つは、ポートがそれを使用したプロセス間でかなりプライベートなままであったことです。一度フォークされたパイプ(pipe
コール)のように、ポートの存在をブロードキャストする必要はありませんでした。 (別の解決策がある場合は、おそらくそれと一緒に暮らしていますが、ちょっと迷惑です。)親プロセスからMachプロセスへの送信権をどのようにして子プロセスに送るのですか?
ええ、それはブートストラップポートの "まともな"ハックでしたが、他の特別なポートではやっていないと思います。 – zneak