Use sigaction if possible
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index fe79447..7bd1d06 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -262,8 +262,14 @@
 	PySignal_SignalHandlerArray[0].tripped = 0;
 	for (i = 1; i < NSIG; i++) {
 		RETSIGTYPE (*t)();
+#ifdef HAVE_SIGACTION
+		struct sigaction act;
+		sigaction(i,  0, &act);
+		t = act.sa_flags;
+#else
 		t = signal(i, SIG_IGN);
 		signal(i, t);
+#endif
 		PySignal_SignalHandlerArray[i].tripped = 0;
 		if (t == SIG_DFL)
 			PySignal_SignalHandlerArray[i].func =