At 9:42 AM +0200 7/30/06, Martin v. Löwis wrote: >Tony Nelson schrieb: >> 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. > >You can use GenerateConsoleCtrlEvent to send Ctrl-C to all processes >that share the console of the calling process.
That looks like it would work, but it seems prone to overkill. To avoid killing all the processes running from a console, the test would need to be run in a subprocess in a new process group. If the test simply sends the event to its own process, all the other processes in its process group would receive the event as well, and probably die. I would expect that all the processes sharing the console would die, but even if they didn't when I tried it, I couldn't be sure that it wouldn't happen elsewhere, say when run from a .bat file. Martin, your advice is usually spot-on, but I don't always understand it. Maybe using it here is just complicated. I expect that GenerateConsoleCtrlEvent() can be called through the ctypes module, though that would make backporting the test to 2.4 a bit more difficult. It looks like the subprocess module can be passed the needed creation flag to make a new process group. The subprocess can send the event to itself, and could return the test result in its result code, so that part isn't so bad. To avoid adding a new file to the distribution, test_socket.test_main() could be modified to look for a command line argument requesting the particular test action. >> 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. > >Indeed, alarm should be available on any POSIX system. Well, if alarm() is available, then the test will work. If not, it will be silently skipped, as are some other tests already in test_socket.py. I can't offhand tell if MSWindows supports alarm(), but RiscOS and OS2 do not. ____________________________________________________________________ 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