Biasanya, stdoutbuffer baris. Dengan kata lain, selama printfargumen 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 stdoutmenjadi buffer baris, bahkan saat menggunakan pipa?
expectsendiri karenaunbuffertampaknya tidak disertakan secara default di OS X.