質問

IPC と Unix のドメイン ソケットと名前付きパイプの違いは何ですか?

さまざまな本から曖昧な定義を入手しましたが、どれをどこで使用する必要があるのか​​を明確にすることができませんでした。

役に立ちましたか?

解決

2 つのプロセスが相互に通信するほぼすべての方法が IPC の一種とみなされる可能性があります。

例えば:

  1. 名前のないパイプ ( cat file.txt | grep foo ) または 名前付きパイプ
  2. Unix ドメインソケット
  3. TCP または UDP ソケット
  4. Linux 上の Netlink ソケット
  5. メモリ マップド ファイルなどのさまざまな共有メモリ メカニズム
  6. 高速メッセージパッシングなど ゼロMQ

他のヒント

qrdlが述べたように、UNIXドメインソケットと名前付きパイプは両方ともIPCメカニズムです。

これら2つのうち、名前付きパイプは操作が簡単ですが、UNIXドメインソケットよりも柔軟性がはるかに劣ります。たとえば、書き込みプロセスごとに複数の読み取りプロセスが予想される場合、UNIXドメインソケットは必須です。書き込みプロセスの実行中に読み取りプロセスが停止および開始すると予想される場合は、UNIXドメインソケットが必要になります。

IPC を意味する プロセス間通信. 。UNIX ドメイン ソケットと名前付きパイプは、Wikipedia で説明されている 2 つの IPC メカニズムにすぎません。

質問に焦点を当ててくれてありがとう、いくつかの更新された機能:

ドメインソケットでは、実際の通信(データ交換)はファイルシステムを使用せず、カーネルメモリのバッファーを使用します。デフォルトでは、全二重モードです。

名前付きパイプは、データを処理するためにファイルシステムに保持されるファイルであるアクセスポイントによって識別されます。デフォルトでは、名前付きパイプはブロックされた読み取りおよび書き込み操作をサポートします。ただし、名前付きパイプを開くときにO_NONBLOCKフラグを指定することにより、名前付きパイプで非ブロック操作をサポートすることができます。名前付きパイプは、読み取り専用または書き込み専用で開く必要があります。半二重、一方向チャネルであるため、読み取り/書き込み用に開かないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top