From: Leandro Lucarella Date: Tue, 25 Nov 2003 03:22:58 +0000 (+0000) Subject: Capturo las seniales ANSI C SIGINT, SIGTERM y SIGQUIT para que el server salga X-Git-Tag: svn_import~177 X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/commitdiff_plain/7ef672fd3601055cca3697fd0c4d534dbb9153c5?hp=1f8b8040f374c36d90625d31e0fc1bef2e94f0a8 Capturo las seniales ANSI C SIGINT, SIGTERM y SIGQUIT para que el server salga bien. --- diff --git a/Server/src/main.cpp b/Server/src/main.cpp index 08c7cd5..487fb6c 100644 --- a/Server/src/main.cpp +++ b/Server/src/main.cpp @@ -32,6 +32,7 @@ #include #include #include +#include using namespace std; using namespace PlaQui::Server; @@ -51,6 +52,18 @@ void on_finished(void) { server = NULL; } +void on_signal(int signal) { + switch (signal) { + case SIGINT: + case SIGTERM: + case SIGQUIT: + if (server) { + server->finish(); + } + break; + } +} + int main(int argc, char* argv[]) { // Termina con mas informacion si hay una excepcion no manejada. @@ -76,6 +89,11 @@ int main(int argc, char* argv[]) { // Inicializa threads. Glib::thread_init(); + // Pone un manejador de seƱales para salir limpiamente del programa. + signal(SIGINT, on_signal); + signal(SIGTERM, on_signal); + signal(SIGQUIT, on_signal); + try { // Crea el server (empieza a escuchar). server = new Server(filename, port);