Genellikle stdoutsatır ara belleğe alınır. Başka bir deyişle, printfargümanınız bir satırsonu ile bittiği sürece , satırın anında basılmasını bekleyebilirsiniz. Yönlendirme için bir boru kullanırken bu geçerli görünmüyor tee.
C ++ programım var, adizeleri her zaman \n-sonlandırılmış stdout.
Kendi başına çalıştırıldığında ( ./a), her şey beklendiği gibi doğru ve doğru zamanda yazdırılır. Ancak, tee( ./a | tee output.txt) 'ye yönlendirirsem, çıkana kadar hiçbir şey yazdırmaz, bu da kullanım amacını bozar tee.
fflush(stdout)C ++ programında her yazdırma işleminden sonra bir ekleyerek düzeltebileceğimi biliyorum . Ama daha temiz ve daha kolay bir yol var mı? Örneğin, stdoutbir boru kullanırken bile satır tamponlamaya zorlayacak çalıştırabileceğim bir komut var mı ?
expectkendimiunbufferOS X'e varsayılan olarak dahil edilmemiş gibi derlemek zorunda kaldım .