On Fri, Mar 20, 2015 at 08:35:34PM +0000, Alan Gauld wrote: > Yeah, I know you can catch a signal and add your own handler, but I > meant what is the default Python suspend behaviour? Does it execute any > outstanding exception blocks? What about finally blocks? Or, if about to > exit a context manager, the __exit__ method?
Depends on the signal. I'm not an expert on how signals work in Linux, or other Unixes, but I expect that, in the absense of a specific signal handler to catch it, the "sleep" (pause?) signal will cause the interpreter to just stop and wait. I think that's signal 19 on Linux, and 18 to wake. Signal 9 doesn't give the interpreter to do anything. The OS just yanks the carpet out from under its feet and terminates the process with extreme prejudice. Signal 9 cannot be caught, no signal handlers will detect it, no try...finally blocks will run. The process just stops. Don't use kill -9 unless you need to. I always try three steps to kill a rogue process: First use "kill <processid>" with no other arguments. Give it 30 seconds or so to let the process tidy up after itself, and if it still hasn't quiet, try "kill -HUP <processid>". Again, give it 30 seconds or so. Then, if and only if necessary, "kill -9 <processid>". > Or does it just stop and wait till its resumed? Kind of like > an implicit yield statement? > > > -- > Alan G > Author of the Learn to Program web site > http://www.alan-g.me.uk/ > http://www.amazon.com/author/alan_gauld > Follow my photo-blog on Flickr at: > http://www.flickr.com/photos/alangauldphotos > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor