Biasanya, stdout
buffer baris. Dengan kata lain, selama printf
argumen Anda diakhiri dengan baris baru, Anda dapat mengharapkan baris tersebut dicetak secara instan. Tampaknya ini tidak berlaku saat menggunakan pipa untuk dialihkan tee
.
Saya memiliki program C ++ a
,, yang mengeluarkan string, selalu \n
-terminasi, ke stdout
.
Ketika dijalankan dengan sendirinya ( ./a
), semuanya dicetak dengan benar dan pada waktu yang tepat, seperti yang diharapkan. Namun, jika saya menyalurkannya ke tee
( ./a | tee output.txt
), itu tidak mencetak apa pun hingga berhenti, yang mengalahkan tujuan penggunaan tee
.
Saya tahu bahwa saya dapat memperbaikinya dengan menambahkan fflush(stdout)
setelah setiap operasi pencetakan dalam program C ++. Tapi apakah ada cara yang lebih bersih dan mudah? Apakah ada perintah yang dapat saya jalankan, misalnya, yang akan memaksa stdout
menjadi buffer baris, bahkan saat menggunakan pipa?
expect
sendiri karenaunbuffer
tampaknya tidak disertakan secara default di OS X.