パイプを介して2つのプロセスを互いに接続できますか?

パイプを介して2つのプロセスを互いに接続できますか?

存在するこのページ~から4.4 BSDオペレーティングシステムの設計と実装、それは言う:

パイプとソケットの主な違いは、パイプが通信チャネルを確立するために共通の親プロセスを必要とすることです。

ただし、正しく文書化した場合、新しいプロセスを作成する唯一の方法は、fork既存のプロセスを作成することです。だから私は2つのプロセスが共通の祖先を持つことができない方法を理解していません。それでは、すべてのプロセスペアがパイプを介して互いに接続できることは正しいですか?

ベストアンサー1

それでは、すべてのプロセスペアがパイプを介して互いに接続できることは正しいですか?

まさか。

パイプは親プロセスによって設定する必要があります。今後1 つ以上の子がフォークされます。子プロセスが分岐すると、そのファイル記述子は「外部から」(デバッガなどを無視)操作できず、親プロセス(または他のプロセス)は事実の後に「comms.channel設定」部分を実行できません。

したがって、すでに実行されている2つのランダムプロセスを使用している場合は、それらの間にパイプを直接設定することはできません。通信を許可するには、任意の形式のソケット(または他のIPCメカニズム)を使用する必要があります。 (ただし、一部のオペレーティングシステム(そのうちFreeBSD)では、Unixドメインソケットからファイル記述子を送信できます。)

おすすめ記事