シェルの作成に取り組んでいますが、ユーザーが 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() が呼び出されてから物事が進み続けるように変更するにはどうすればよいですか?