Genellikle stdout
satır ara belleğe alınır. Başka bir deyişle, printf
argü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, a
dizeleri 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, stdout
bir boru kullanırken bile satır tamponlamaya zorlayacak çalıştırabileceğim bir komut var mı ?
expect
kendimiunbuffer
OS X'e varsayılan olarak dahil edilmemiş gibi derlemek zorunda kaldım .