บางครั้งคอนโซลจำเป็นต้องมีreset(1)
(หรือstty(1)
คำสั่งบางอย่าง) เนื่องจากสถานะของเทอร์มินัลหลอกไม่เปลี่ยนแปลงเมื่อกระบวนการบางอย่าง (เช่นโปรแกรมที่เริ่มโดยเชลล์ของคุณ) ถูกยกเลิก
อ่านTTY demystified
(ฉันพบว่าการจัดการเทอร์มินัลเทียมและหลอกเป็นส่วนที่ยากที่สุดของ Linux)
มีกลยุทธ์ที่จะแก้ปัญหานี้ในภาษาการเขียนโปรแกรมหลักหรือไม่?
โปรแกรมที่มีความประพฤติดีจัดการกับเครื่องเทอร์มินัลและการเปลี่ยนโหมดหรือระเบียบวินัยของสายควรพยายามอย่างหนักเพื่อหลีกเลี่ยงการหยุดทำงานและออกสายที่เหมาะสม (ดูtermios (3) ) เพื่อทำให้เครื่องอยู่ในสถานะที่ถูกต้อง BTW ไลบรารีเช่นncursesหรือreadlineมีประโยชน์ (แต่คุณต้องเรียกรูทีนการล้างข้อมูลอย่างเหมาะสม)
ดูสัญญาณ (7)และสัญญาณความปลอดภัย (7) หลีกเลี่ยงการหยุดทำงานในรหัสของคุณเป็นเรื่องยาก อ่านข้อมูลเกี่ยวกับพฤติกรรมที่ไม่ได้กำหนด
วิธีแก้ปัญหาที่ไม่สมบูรณ์อาจเป็นการกำหนดฟังก์ชันเชลล์ซึ่งเรียกใช้โปรแกรมของคุณจากนั้นทำreset
(ซึ่งบางครั้งอาจไม่เหมาะสม)