我正在编写一个外壳程序,但是我希望在用户点击即 control-C 或 control-Z 时有存根的信号处理程序。我的代码如下;正如我所调查的那样,我可以让它不在 control-Z 上停止,但仍然在 control-Z 上暂停。
最新发布的代码版本位于http://JonathansCorner.com/cjsh/download.cgi。我正在处理的代码是:
def handle_signal(signal_number, frame):
print ('''
CJSH does not support the traditional and rather archaic methods of job
control. This arises partly from implementation concerns and partly for reasons
practical concerns.
In ye olden dayes with the green glow of terminals, it was important to have a
sophisticated job handling in place so jobs could be stopped, suspended, put in
the foreground, and so on and so forth, and for that matter this feature is
still used despite the fact that it was essentially a consolation prize for not
having multiple windows.
Don't try to suspend, resume, background, foreground, etc.
There is a more excellent way.
Now we have not the consolation prize but the real thing: unless you're on a
netbook or smaller, you can open another window for another job. If you have no
more use for a job, close the window.
Just open another window, or maybe a tab.
''')
signal.signal(signal.SIGTSTP, handle_signl)
signal.signal(signal.SIGHUP, handle_signal)
signal.signal(signal.SIGINT, handle_signal)
signal.signal(signal.SIGQUIT, handle_signal)
signal.signal(signal.SIGABRT, handle_signal)
signal.signal(signal.SIGALRM, handle_signal)
signal.signal(signal.SIGTERM, handle_signal)
#signal.siginterrupt(signal.SIGTSTP, False)
#signal.siginterrupt(signal.SIGHUP, False)
#signal.siginterrupt(signal.SIGINT, False)
#signal.siginterrupt(signal.SIGQUIT, False)
#signal.siginterrupt(signal.SIGABRT, False)
#signal.siginterrupt(signal.SIGALRM, False)
#signal.siginterrupt(signal.SIGTERM, False)
这里需要改变什么,我应该如何改变它以便调用 handle_signal() 然后事情继续滴答作响?