Jon*_*ein 9 command-line kill console crash
某些命令行界面工具在取消时返回损坏的控制台CTRL+C。有时文本是不可见的,或者在我运行命令之前存在图形问题reset。
(我使用 bash,但希望它独立于 shell。)
这个效果有名字吗?是什么导致了这种情况,程序员如何在工具中防止这种情况发生?在主要的编程语言中是否有解决这个问题的策略?
Bas*_*tch 14
控制台有时需要一个reset(1) (或一些stty(1)命令),因为当某个进程(例如,由您的 shell 启动的程序)终止时,伪终端的状态不会改变。
阅读tty 揭秘。
在主要的编程语言中是否有解决这个问题的策略?
处理终端并更改其模式或线路规则的行为良好的程序应尽量避免崩溃并发出适当的调用(请参阅termios(3))以使终端处于正确状态。顺便说一句,像ncurses或readline这样的库很有帮助(但你需要适当地调用它们的清理例程)。
请参阅信号(7)和信号安全(7)。避免代码崩溃是很困难的。阅读未定义行为。
一个不完美的解决方法可能是定义一个 shell 函数来运行你的程序然后执行reset(有时可能不合适)。