At 2:38 PM -0700 7/29/06, Josiah Carlson wrote: >Tony Nelson <[EMAIL PROTECTED]> wrote: >> >> I'm trying to write a test for my Socket Timeouts patch [1], which fixes >> signal handling (notably Ctl-C == SIGINT == KeyboarInterrupt) on socket >> operations using a timeout. I don't see a portable way to send a signal, >> and asking the test runner to press Ctl-C is a non-starter. A "real" >> signal is needed to interrupt the select() (or equivalent) call, because >> that's what wasn't being handled correctly. The bug should happen on the >> other platforms I don't know how to test on. >> >> Is there a portable way to send a signal? SIGINT would be best, but >> another signal (such as SIGALRM) would do, I think. > >According to my (limited) research on signals, Windows signal support is >horrible. I have not been able to have Python send signals of any kind >other than SIGABRT, and then only to the currently running process, >which kills it (regardless of whether you have a signal handler or not).
Hmm, OK, darn, thanks. MSWindows does allow users to press Ctl-C to send a KeyboardInterrupt, so it's just too bad if I can't find a way to test it from a script. >> If not, should I write the test to only work on systems implementing >> SIGALRM, the signal I'm using now, or implementing kill(), or what? > >I think that most non-Windows platforms should have non-braindead signal >support, though the signal module seems to be severely lacking in >sending any signal except for SIGALRM, and the os module has its fingers >on SIGABRT. The test now checks "hasattr(signal, 'alarm')" before proceeding, so at least it won't die horribly. >If someone is looking for a project for 2.6 that digs into all sorts of >platform-specific nastiness, they could add actual signal sending to the >signal module (at least for unix systems). Isn't signal sending the province of kill (2) (or os.kill()) in python)? Not that I know much about it. BTW, I picked SIGALRM because I could do it all with one thread. Reading POSIX, ISTM that if I sent the signal from another thread, it would bounce off that thread to the main thread during the call to kill(), at which point I got the willies. OTOH, if kill() is more widely available than alarm(), I'll give it a try, but going by the docs, I'd say it isn't. ____________________________________________________________________ TonyN.:' <mailto:[EMAIL PROTECTED]> ' <http://www.georgeanelson.com/> _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com