Unixドメインソケットと名前付きパイプの違いは?質問する

Unixドメインソケットと名前付きパイプの違いは?質問する

UNIX の名前付きソケットを見て、名前付きパイプだと思いました。名前付きパイプを見ても、大きな違いは見つかりませんでした。初期化方法が異なっていたのはわかりましたが、私が気づいたのはそれだけです。どちらも C の書き込み/読み取り関数を使用し、私の知る限り同じように動作します。

Unix ドメイン ソケットと名前付きパイプの違いは何ですか? どちらを選択する必要があるのでしょうか? デフォルトではどちらを使用する必要がありますか (C++ でデフォルトでベクターを使用し、必要に応じて deque、list、またはその他のものを使用するのと同じように)?

ベストアンサー1

UNIX ドメイン ソケットは一般に名前付きパイプよりも柔軟性があります。その利点のいくつかは次のとおりです。

  • 2 つ以上のプロセスが通信する場合に使用できます (例: 複数のクライアント プロセスが接続する可能性のあるサーバー プロセス)。
  • これらは双方向です。
  • プロセス間でカーネル検証済みの UID / GID 資格情報を渡すことをサポートします。
  • プロセス間でのファイル記述子の受け渡しをサポートします。
  • パケット モードとシーケンス パケット モードをサポートします。

これらの機能の多くを使用するには、 /ではなくsend()/ファミリのシステム コールを使用する必要があります。recv()write()read()

おすすめ記事