我正在调查curses.wrapper
无法正确恢复终端的错误。该问题在背景/前景序列之后显示。
考虑以下保存在中的 python 程序myprogram.py
:
import curses, subprocess
# Function that does nothing
def f(*args, **kwargs):
pass
curses.wrapper(f)
# Call vi to open a file
subprocess.call("vi /tmp/foo", shell=True)
重现问题的步骤:
- 运行程序:
python myprogram.py
- 它开始 vi 编辑文件
/tmp/foo
- 当我击中
ctrl-z
它时,它让我回到我的壳里 - 当我恢复程序时
fg
- 它重新启动编辑器但屏幕错误(全黑且未绘制编辑器)
删除curses.wrapper(f)
线使程序工作:当程序恢复时,编辑器被正确绘制。
我尝试了多种方法,例如将调用替换为curses.wrapper(f)
实际执行的操作,并且最小的示例(即调用initscr
, endwin
)也会导致相同的问题。
我在跑步:
- zsh 5.0.5,我也试过了最新的fish shell版本
- 蟒蛇2.7.6
- VIM - Vi 改进版 7.3
我错过了什么?