UNIX の名前付きソケットを見て、名前付きパイプだと思いました。名前付きパイプを見ても、大きな違いは見つかりませんでした。初期化方法が異なっていたのはわかりましたが、私が気づいたのはそれだけです。どちらも C の書き込み/読み取り関数を使用し、私の知る限り同じように動作します。
Unix ドメイン ソケットと名前付きパイプの違いは何ですか? どちらを選択する必要があるのでしょうか? デフォルトではどちらを使用する必要がありますか (C++ でデフォルトでベクターを使用し、必要に応じて deque、list、またはその他のものを使用するのと同じように)?
ベストアンサー1
UNIX ドメイン ソケットは一般に名前付きパイプよりも柔軟性があります。その利点のいくつかは次のとおりです。
- 2 つ以上のプロセスが通信する場合に使用できます (例: 複数のクライアント プロセスが接続する可能性のあるサーバー プロセス)。
- これらは双方向です。
- プロセス間でカーネル検証済みの UID / GID 資格情報を渡すことをサポートします。
- プロセス間でのファイル記述子の受け渡しをサポートします。
- パケット モードとシーケンス パケット モードをサポートします。
これらの機能の多くを使用するには、 /ではなくsend()
/ファミリのシステム コールを使用する必要があります。recv()
write()
read()