]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Capturo las seniales ANSI C SIGINT, SIGTERM y SIGQUIT para que el server salga
authorLeandro Lucarella <llucax@gmail.com>
Tue, 25 Nov 2003 03:22:58 +0000 (03:22 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Tue, 25 Nov 2003 03:22:58 +0000 (03:22 +0000)
bien.

Server/src/main.cpp

index 08c7cd50a5dbe83fb28ca82e30a3a3de42794cd2..487fb6c1fa9708f94b0eaa7070239ba82d1c8394 100644 (file)
@@ -32,6 +32,7 @@
 #include <glibmm/timer.h>
 #include <iostream>
 #include <exception>
 #include <glibmm/timer.h>
 #include <iostream>
 #include <exception>
+#include <csignal>
 
 using namespace std;
 using namespace PlaQui::Server;
 
 using namespace std;
 using namespace PlaQui::Server;
@@ -51,6 +52,18 @@ void on_finished(void) {
        server = NULL;
 }
 
        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.
 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();
 
        // 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);
        try {
                // Crea el server (empieza a escuchar).
                server = new Server(filename, port);