รีเฟรชเอาต์พุตต่ออักขระไม่ใช่ต่อบรรทัด


0

โปรแกรมของฉันพิมพ์ออกมา.(โดยไม่ขึ้นบรรทัดใหม่) ทุก ๆ 100 มิลลิวินาทีเพื่อบ่งบอกถึงความคืบหน้า เมื่อรันบนเครื่องรีโมตผ่าน ssh อย่างไรก็ตามฉันไม่เห็นเอาต์พุตก่อนที่จะพิมพ์บรรทัดใหม่ ฉันลองใช้ Cygwin และ Ubuntu

มีวิธีในการสร้างเอาต์พุต ssh ก่อนที่เส้นจะเสร็จสมบูรณ์หรือไม่?

คำตอบ:


2

ปัญหามักเกิดจากการบัฟเฟอร์ของโปรแกรมของคุณหรือมากกว่านั้นอย่างแม่นยำโดยไลบรารี IO หรือเวลาทำงานที่โปรแกรมของคุณใช้ การบัฟเฟอร์บรรทัดโดยเฉพาะ

Unbuffered IO นั้นมีประสิทธิภาพน้อยกว่ามากซึ่งเป็นเหตุผลว่าทำไมมันไม่ถูกใช้เป็นค่าเริ่มต้น

ภาษาโปรแกรมมักจะมีวิธีการระบุเอาต์พุตที่ไม่มีบัฟเฟอร์ เนื่องจากโดยทั่วไปจะขึ้นอยู่กับว่า STDOUT เชื่อมต่อกับอะไรมันก็ยังได้รับผลกระทบจากการตั้งค่าสภาพแวดล้อมระบบปฏิบัติการ

ดูเพิ่มเติมstdbuf


น่ากลัว! prepending stdbuf -o 0คำสั่งไม่หลอกลวง ขอบคุณ
jederik
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.