我正在使用ncurses绘制TUI.麻烦的是,每当我的程序出现seg-fault时,我的终端就会一团糟.我看不出我在打字.因为我在ssh工作,这很痛苦.我通过使用屏幕减轻了一些效果.
我想知道是否有一个命令会在ncurses中的seg-fault之后刷新我的终端,以便我的终端开始正常运行.
Tho*_*key 11
ncurses(任何curses实现)在运行时将终端模式设置为raw和noecho,并允许应用程序使用raw和noraw,echo和noecho函数来模拟这些模式.它是为了提高性能,以避免在这些模式之间切换时等待.
当应用程序调用时endwin,ncurses将恢复终端模式.它也可以为reset_shell_mode执行此操作,但endwin更常使用.
如果您的应用程序崩溃或退出而未使用恢复终端模式endwin,最明显的问题是您无法看到您正在键入的内容,并且按下enter不起作用.
ncurses的提供信号处理程序来捕获用户发起的信号SIGINT,SIGTERM和将清理时那些被发现.它并没有试图捕获,SIGSEGV因为在那一点上,你的应用程序已经死了,并试图恢复它来修复东西是适得其反的.
有些人可能会建议使用stty sane恢复终端模式.这"有效",但在Unix平台上可能会将您的擦除密钥设置为意外值.它恰好像Linux和现代BSD系统一样工作.
但是,除此之外,ncurses通常会重置
如果您的应用程序使用任何这些功能,那么该reset命令是适当的选择.它通常也会清除屏幕(也许不是想要的).它使用更少的字符:
resetcontrolJ
stty sanecontrolJ
进一步阅读:
reset - 重新初始化命令
reset
Run Code Online (Sandbox Code Playgroud)
在Ubuntu上也为我工作,虽然可能有点过分.什么最有效的是设置一个别名,如:
alias 'clean'='stty sane;clear;'
Run Code Online (Sandbox Code Playgroud)
在我的.bash_aliases中,我发现自己需要在调试中做很多事情.
| 归档时间: |
|
| 查看次数: |
8792 次 |
| 最近记录: |