summaryrefslogtreecommitdiffstats
path: root/Python/pythonrun.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-09-16 16:32:19 (GMT)
committerGuido van Rossum <guido@python.org>2000-09-16 16:32:19 (GMT)
commit6f25618be5d8756284dc99c47953268e398175d0 (patch)
tree861a55388df2b26739752d00360d2f3827c26573 /Python/pythonrun.c
parentc7247ce2691baeb1ff9e2fad144c84825591642c (diff)
downloadcpython-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.c34
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
+}