在Py3k中,如何使用信号处理程序来阻止信号的默认操作?

2024-05-29 03:02:54 发布

您现在位置:Python中文网/ 问答频道 /正文

How can I add signal handlers to a shell written in Py3k/Python?中,我有一些信号处理程序,它们似乎在执行操作,然后让默认操作通过。对于一个具体的实例,如果我点击control-Z,它将显示信号处理程序指定的消息,然后(不需要的)继续挂起进程。在

如何(如果可能的话)显示一条消息然后忽略一个信号?在


Tags: to实例in程序add消息signalhandlers
2条回答

您的按键可能会提高SIGSTOP而不是{}。 在终端中运行stty -a,以确定分配给ctrl+z的确切信号。在

根据维基百科(可能还有手册页)^{} and ^{} are differentSIGSTP被发送到进程,因此可以被拦截,而{}被操作系统接收,因此无法被拦截。在

CTRL-Z不是一个信号,它是一个组合键。在Windows上,CTRL-Z将发送一个EOF,这也不是一个信号,所以我假设您是指在Unix上,因为大多数unixshell将在CTRL-Z上发送一个信号,即SIGTSTP信号。在

更改SIGTSTP的处理程序可以正常工作:

>>> import signal
>>> def handler(signum, frame):
...    print(signum, frame, "yay!")
... 
>>> signal.signal(signal.SIGTSTP, handler)
0
<Here I press CTRL-Z>
>>> 20 None yay!

相关问题 更多 >

    热门问题