[Chicago] Py3k Signal Handling

Matt Bone thatmattbone at gmail.com
Sun Nov 11 18:03:07 CET 2012


It's probably important to note that SIGSTOP can't be ignored:
http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html

You'd probably have to do some other magic to prevent ctrl-z from even
_sending_ that signal. I don't know how to do that off the top of my head,
but I'm confident its possible.

--matt


On Sat, Nov 10, 2012 at 3:22 PM, Brian Curtin <brian at python.org> wrote:

> On Sat, Nov 10, 2012 at 10:08 AM, Jonathan Hayward <
> jonathan.hayward at pobox.com> wrote:
>
>> I am working on writing a shell, but I want to have stubbed signal
>> handlers when the user hits i.e. control-C or control-Z. My code is as
>> follows; as I have investigated it, I can get it to not stop on a
>> control-Z, but still suspend on a control-Z.
>>
>> The most recent published version of the code is at
>> http://JonathansCorner.com/cjsh/download.cgi<http://jonathanscorner.com/cjsh/download.cgi>.
>> The code I am working on is:
>>
>> 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)
>>
>> What needs changing here and how should I change it so that
>> handle_signal() is called and then things keep on ticking?
>>
> I don't know if this is the answer, but this typo stood out: signl
>
> signal.signal(signal.SIGTSTP, handle_signl)
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> http://mail.python.org/mailman/listinfo/chicago
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20121111/cb6243ed/attachment.html>


More information about the Chicago mailing list