nc
<(...)
内のコマンド stdin からも読み取ります。
簡単な例:
$ nc -l 9999 >/tmp/foo &
[1] 5659
$ echo text | cat <(nc -N localhost 9999) -
[1]+ Done nc -l 9999 > /tmp/foo
text
はどこでしたか 行く?ネットキャットを通じて。
$ cat /tmp/foo
text
あなたのプログラムと nc
同じ stdin と nc
を争う
E/POLLIN で返される epoll() または poll() は、単一の read() かもしれない ブロックしない
あなたのように、改行まで 1 バイトの read() をたくさん実行できるわけではありません。
私はかもしれないと言います E/POLLIN で返された epoll() の後の read() がブロックされる可能性があるためです。
コードは EOF を過ぎても読み取ろうとし、read() エラーを完全に無視します。