On Sun, 28 Aug 2011 18:15:56 -0700, Russ P. wrote: > Is there a > simple way to ensure that the first Control-C will kill the whole darn > thing, i.e, the top-level script? Thanks.
You might try using subprocess.Popen() or subprocess.call() rather than os.system(). os.system() calls the platform's system() function. On Unix, this specifically ignores SIGINT and SIGQUIT for the duration of the call, ensuring that Ctrl-C and Ctrl-\ only affect the child process and not the parent. subprocess.Popen() doesn't perform any implicit signal handling; it's implemented in Python in terms of os.fork() and os.execvp[e](). It also has a better interface (i.e. you get to directly control the argument list passed to the child process, rather than having to construct a shell command and hope that you got the quoting/escaping correct). This may not suffice if any of the descendent processes are moved into their own process group, as signals generated by the tty driver are sent only to the foreground process group. However, this is unlikely to be an issue for simple non-interactive programs (e.g. standard Unix "commands"). -- http://mail.python.org/mailman/listinfo/python-list