diff options
author | Guido van Rossum <guido@python.org> | 2000-09-16 16:32:19 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2000-09-16 16:32:19 (GMT) |
commit | 6f25618be5d8756284dc99c47953268e398175d0 (patch) | |
tree | 861a55388df2b26739752d00360d2f3827c26573 /Python/pythonrun.c | |
parent | c7247ce2691baeb1ff9e2fad144c84825591642c (diff) | |
download | cpython-6f25618be5d8756284dc99c47953268e398175d0.zip cpython-6f25618be5d8756284dc99c47953268e398175d0.tar.gz cpython-6f25618be5d8756284dc99c47953268e398175d0.tar.bz2 |
Add PyOS_getsig() and PyOS_setsig() -- wrappers around signal() or
sigaction() (if HAVE_SIGACTION is defined).
Diffstat (limited to 'Python/pythonrun.c')
-rw-r--r-- | Python/pythonrun.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 924ebf3..e29e719 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1214,3 +1214,37 @@ PyOS_CheckStack(void) /* Alternate implementations can be added here... */ #endif /* USE_STACKCHECK */ + + +/* Wrappers around sigaction() or signal(). */ + +PyOS_sighandler_t +PyOS_getsig(int sig) +{ +#ifdef HAVE_SIGACTION + struct sigaction context; + sigaction(sig, NULL, &context); + return context.sa_handler; +#else + PyOS_sighandler_t handler; + handler = signal(sig, SIG_IGN); + signal(sig, handler); + return handler; +#endif +} + +PyOS_sighandler_t +PyOS_setsig(int sig, PyOS_sighandler_t handler) +{ +#ifdef HAVE_SIGACTION + struct sigaction context; + PyOS_sighandler_t oldhandler; + sigaction(sig, NULL, &context); + oldhandler = context.sa_handler; + context.sa_handler = handler; + sigaction(sig, &context, NULL); + return oldhandler; +#else + return signal(sig, handler); +#endif +} |