about second parameter of signal handler func.

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Tue Mar 27 11:14:00 EDT 2007


En Tue, 27 Mar 2007 02:34:48 -0300, Bjoern Schliessmann  
<usenet-mail-0306.20.chr0n0ss at spamgourmet.com> escribió:

>> In C, a signal handler function has only one parameter, that is
>> signal number. But in Python(import signal), a signal handler
>> function has two parameters, the first is signal number, the
>> second is "frame"?
>>
>> What is "frame", please?
>
> Did you bother using help()?

The help text is of little help if you don't know what is it talking  
about...

The Python signal handler has additional information: you know *what* was  
being executed when the signal was caught (or nearly).
A little example:


import signal

def babies(n):
     if n<=1: return 1
     return adults(n-1)

def adults(n):
     if n<=1: return 0
     return adults(n-1)+babies(n-1)

def fibom(n):
     return adults(n)+babies(n)

def handler(signum, frame):
     print "At",frame.f_code.co_name, "in", frame.f_code.co_filename,  
"line", frame.f_lineno

# Press CTRL-C to see what's being executed
signal.signal(signal.SIGINT, handler)
for n in range(50):
     print n, fibom(n)

-- 
Gabriel Genellina




More information about the Python-list mailing list