[Python-Dev] C bindings calling tmpfile() blocks interrupt signal (original) (raw)

Florent Pillet fpillet at gmail.com
Thu Jul 7 14:17:13 CEST 2005


I discovered an issue on Mac OS X that seems to relate to signal handling. I have a C binding in which I call the standard tmpfile() function. After calling it, I can't break Python anymore with CTRL-C.

Investigating the Darwin source code for tmpfile() (and FreeBSD, they are the same) , I found that the function is mucking with the signals:

http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/stdio/tmpfile.c?rev=1.9&content-type=text/x-cvsweb-markup

Is this considered a Python issue, or an OS issue? I ran a simple test against the interrupt signal, which didn't show any wrong behavior:

static void intcatcher(int sig) { printf("Interrupt catched\n"); exit(1); } int main(int argc, char **argv) { signal(SIGINT, intcatcher); printf("Press CTRL-C to interrupt...\n"); tmpfile(); while (1) ; return 0; }

But with my threaded Python code, SIGINT doesn't work anymore after my binding has called tmpfile().

Florent

-- Florent Pillet http://www.florentpillet.com Freelance software developer/consultant - Palm OS & Mac OS X ICQ: 117292463 Skype: callto://florent.pillet



More information about the Python-Dev mailing list