Karena nc
perintah di dalam <(...)
juga akan membaca dari stdin.
Contoh yang lebih sederhana:
$ nc -l 9999 >/tmp/foo &
[1] 5659
$ echo text | cat <(nc -N localhost 9999) -
[1]+ Done nc -l 9999 > /tmp/foo
Di mana text
Pergilah? Melalui netcat.
$ cat /tmp/foo
text
Program Anda dan nc
bersaing untuk stdin yang sama, dan nc
mendapatkan sebagian.
epoll() atau poll() kembali dengan E/POLLIN hanya akan memberi tahu Anda bahwa tunggal read() mungkin tidak memblokir.
Bukan berarti Anda akan dapat melakukan banyak read() satu byte hingga baris baru, seperti yang Anda lakukan.
Saya katakan mungkin karena read() setelah epoll() dikembalikan dengan E/POLLIN mungkin masih memblokir.
Kode Anda juga akan mencoba membaca melewati EOF, dan sepenuhnya mengabaikan semua kesalahan read().
Bagaimana cara menghasilkan daftar *semua* perintah dan fungsi yang tersedia?
Cetak garis antara pola awal &akhir, tetapi jika pola akhir tidak ada, jangan cetak