我有一段在Python 2.7中使用curses的代码。我能理解的是getch()
给我的SIGINT值为-1。但我想更详细地了解以下行为:
案例#1 考虑一下这段代码:
myscreen = curses.initscr()
def end(sig,frame):
myscreen.addstr(1,0,'sigint')
c=myscreen.getch()
myscreen.addstr(2,0,str(c))
myscreen.getch()
curses.endwin()
sys.exit(0)
signal.signal(signal.SIGINT,end)
myscreen.addstr('waiting...')
myscreen.getch()
curses.endwin()
我得到的输出是:
waiting...
sigint #This I get after first SIGINT
-1 #This I get after second SIGINT
再次按键后,程序结束。所以它需要3次按键。
案例#2 请考虑以下代码:
myscreen = curses.initscr()
myscreen.keypad(1)
def end(sig,frame):
myscreen.addstr(1,0,'sigint')
c=myscreen.getch()
myscreen.addstr(2,0,str(c))
myscreen.getch()
curses.endwin()
sys.exit(0)
signal.signal(signal.SIGINT,end)
myscreen.addstr('waiting...')
myscreen.getch()
curses.endwin()
输出是:
waiting...
sigint
-1 #This I get after first SIGINT
另一次按键后,程序结束。这只占用了2个输入,并且在第一个SIGINT之后我们输出了-1,这意味着getch()
中的第一个end()
自动得到-1的输入(这似乎是来自情况#1的SIGINT)。任何人都可以解释一下keypad()
函数的存在吗?这是与keypad()
处理转义字符的方式有关吗?