Thông thường, stdout
được đệm dòng. Nói cách khác, miễn là printf
đối số của bạn kết thúc bằng một dòng mới, bạn có thể mong đợi dòng đó được in ngay lập tức. Điều này dường như không được giữ khi sử dụng đường ống để chuyển hướng đến tee
.
Tôi có một chương trình C ++ a
, xuất ra các chuỗi, luôn được kết thúc \n
, thành stdout
.
Khi nó được chạy bởi chính nó ( ./a
), mọi thứ sẽ in chính xác và đúng thời điểm, như mong đợi. Tuy nhiên, nếu tôi đặt nó thành tee
( ./a | tee output.txt
), nó sẽ không in bất cứ thứ gì cho đến khi thoát ra, điều này làm mất đi mục đích sử dụng tee
.
Tôi biết rằng tôi có thể sửa lỗi này bằng cách thêm dấu fflush(stdout)
sau mỗi thao tác in trong chương trình C ++. Nhưng có cách nào sạch hơn, dễ dàng hơn không? Chẳng hạn, có lệnh nào tôi có thể chạy sẽ buộc stdout
phải được đệm dòng, ngay cả khi sử dụng đường ống không?
expect
bản thân mình nhưunbuffer
có vẻ không được bao gồm theo mặc định trong OS X.