当我通过 ssh 运行程序时,为什么 stdin 停止回显?

当我通过 ssh 运行程序时,为什么 stdin 停止回显?

当我使用 putty 在服务器上运行某个程序并按下ctrl+c停止它时,我的 stdin 会停止在命令行中向我回显。
因此,例如,在运行程序并停止它之后,如果我输入 ls,我看不到字符 ls,但我可以看到目录列表。
出了什么问题?

答案1

理智

程序可能设置了一些终端设置(请参阅),当您使用+man stty中断它时,程序不会捕获中断并清理(即恢复正常)终端设置,而只是退出。可能只是(回显输入字符)设置需要重置,但也可能还有其他设置需要重置。CtrlCstty echo

只需使用该命令stty sane即可恢复终端设置的正常状态。

或者,您应该能够stty -g > settings.stty在运行程序之前使用 保存当前终端设置。中断程序后,使用stty `cat settings.stty`恢复这些特定设置。stty sane先试一下,它应该能满足您的所有需求。

相关内容