私の目標は、nc
およびを使用して単純なエコーサーバーを作成することfifo
です。私はそれを行うための最良の方法を探しているのではなく、単に次のコマンドのセマンティクスを理解しようとしているだけです(フォークが発生するのはいつ、なぜ、何が変わるのか、なぜコマンドの動作が異なるのか...)。
すべてのコマンドは、POSIXで動作する場合、私はわからないので、私は、バッシュを使っていsh
たりzsh
、ksh
...
タイトルで言及している4つのコマンドを次に示します(既に実行したと想定していますmkfifo fifo
)。
cat fifo | nc -l localhost 8888 > fifo
exec 3<> fifo && nc -l localhost 8888 <&3 >&3 && exec 3>&-
nc -l localhost 8888 <(cat fifo) > fifo
nc -l localhost 8888 < fifo > fifo
今、私は4つのコマンドが同じことをすることを期待しています、少なくとも最後の2つは同じことをすることです。
- 最初のコマンドは期待どおりに動作します。クライアントが接続を閉じるとシャットダウンする単純なエコーサーバーです。
- 1のように動作します。
- サーバーに接続してデータを送信できますが、何も返されません。クライアント接続を閉じると、サーバーがシャットダウンします。
- サーバーに接続できません。サーバーは永久に待機します。