check_function_exists(_fileno HAVE__FILENO)
check_function_exists(fileno HAVE_FILENO)
check_function_exists(_commit HAVE__COMMIT)
+check_function_exists(sigaction HAVE_SIGACTION)
include(CheckLibraryExists)
check_library_exists(m sqrt "" HAVE_LIBM)
}
}
+static void gmx_signal(int signum)
+{
+#ifdef HAVE_SIGACTION
+ struct sigaction act;
+ act.sa_handler = signal_handler;
+ act.flags = SA_RESTART;
+ sigaction(signum,act);
+#else
+ signal(signum,signal_handler);
+#endif
+}
void signal_handler_install(void)
{
{
fprintf(debug,"Installing signal handler for SIGTERM\n");
}
- signal(SIGTERM,signal_handler);
+ gmx_signal(SIGTERM);
}
if (getenv("GMX_NO_INT") == NULL)
{
{
fprintf(debug,"Installing signal handler for SIGINT\n");
}
- signal(SIGINT,signal_handler);
+ gmx_signal(SIGINT);
}
#ifdef HAVE_SIGUSR1
if (getenv("GMX_NO_USR1") == NULL)
{
fprintf(debug,"Installing signal handler for SIGUSR1\n");
}
- signal(SIGUSR1,signal_handler);
+ gmx_signal(SIGUSR1);
}
#endif
}