C - 从ncurses ui转到外部程序并返回

时间:2010-07-15 17:19:29

标签: c ncurses external-process

我正在创建一个在ncurses中显示一些信息的程序,然后打开vim(使用system)以允许用户编辑文件。但是,在退出vim之后,ncurses屏幕将不会重绘。 refreshwrefresh没有做任何事情,导致我的菜单完全被废弃。

所以,我被送回命令行。当我移动它们时,菜单项重绘。四处移动会产生如下情况:

Tragedy

正如你所看到的,我不再处于我那漂亮的ncurses环境中了。

我可以完全拆掉ncurses并重新设置,但是后来某些东​​西(比如菜单位置)不会被保留。

我该如何正确地做到这一点?有没有更好的方法来调用一些外部程序并优雅地返回这里?

2 个答案:

答案 0 :(得分:1)

我从来没有完全重启诅咒。

如果您执行类似

的操作,该怎么办? 然后

def_prog_mode() endwin()

执行系统调用

和refresh()应该恢复它

答案 1 :(得分:0)

将程序状态与curses状态分开。

我所知道的唯一干净方法是完全停止并重新启动curses。如果你的程序有一个干净的内部状态概念(应该如此),那么它应该很容易回到相同的位置。

祝你好运!