2009-09-12 8 views
7

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

私は様々な書籍から漠然とした定義を持っていましたが、どちらをどこで使うべきか明確にすることはできませんでした。

+0

そのスレッドは、より多くの注目を集めているようです。http://stackoverflow.com/questions/9475442/unix-domain-socket-vs-named-pipes – schmijos

答えて

6

2つのプロセスが互いに通信する方法は、IPCの一種と考えることができます。 |またはNamed Pipes

  • のUNIXドメインソケット
  • TCPやUDPソケット
  • Netlink Sockets on Linux
  • 様々な共有メモリメカニズム

    1. 名前パイプ(はgrep fooの猫file.txtなど):たとえば

      メモリマッピングファイルなど

    2. 高速メッセージの受け渡しZeroMQ
  • 6

    qrdlが述べたように、UNIXドメインソケットと名前付きパイプが両方のIPCメカニズムは次のとおりです。UNIXドメインソケットと名前付きパイプは、ちょうど2つのIPCメカニズム、ウィキペディアに記載されています。

    名前付きパイプの方が簡単ですが、UNIXドメインソケットよりもはるかに柔軟性がありません。たとえば、書き込みプロセスごとに複数の読み取りプロセスが期待される場合は、UNIXドメインソケットが必須です。書き込みプロセスの実行中に読み取りプロセスが停止して開始されることを期待する場合は、UNIXドメインソケットが必要です。実際の通信(データ交換)がカーネルメモリ内のファイルシステムが、バッファを使用していないドメインソケットで

    、:

    0

    の質問に焦点を当ててくれてありがとう、いくつか更新された機能。デフォルトでは、全二重モードです。

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

    +2

    OPはドメインソケットについて質問しました。ドメインソケットは通常、パイプを介して実装されるため、パイプほど高速です。ドメインソケットはネットワークソケットと全く同じインターフェイス(異なるソケットファミリ)を持っているので便利です。アプリケーションがソケットをサポートしていて、両者が同じコンピュータ上にあることがわかっている場合、簡単にドメインソケットに切り替えて処理を高速化できます(X Windowsはそれを行います)。あなたは答えが間違っています。 – qrdl

    +0

    うまく更新されることを願っています。 –

    関連する問題