Odchytávání signálu SIGHUP → ukončení programu (po zavření terminálu)
authorFrantišek Kučera <franta-hg@frantovo.cz>
Tue, 07 Apr 2009 23:49:02 +0200
changeset 1018317e52d52b
parent 9 1af54f006439
child 11 481514f85b3a
Odchytávání signálu SIGHUP → ukončení programu (po zavření terminálu)
c++/POSIXoveFronty/Fronta/program.cpp
     1.1 --- a/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 13:09:28 2009 +0200
     1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp	Tue Apr 07 23:49:02 2009 +0200
     1.3 @@ -24,6 +24,7 @@
     1.4      /** Nastavíme reakci na signál SIGTERM */
     1.5      signal(SIGTERM, zpracujSignal);
     1.6      signal(SIGINT, zpracujSignal);
     1.7 +    signal(SIGHUP, zpracujSignal);
     1.8  
     1.9      /** TODO: zeptat se na název fronty – readline */
    1.10      //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY);
    1.11 @@ -64,10 +65,11 @@
    1.12      while (true) {
    1.13          /** TODO: načítat pomocí readline */
    1.14          char zprava[100];
    1.15 -        cout << "Zadejte zprávu: \033[22;32m";
    1.16 +        cout << "Zadejte zprávu: \033[22;32m"; // zelená
    1.17          cin.getline(zprava, 100);
    1.18          cout << "\033[0m\n";
    1.19  
    1.20 +        /** TODO: ošetřit ctrl+d (zacyklení) */
    1.21          if (fronta.odesliZpravu(zprava) == 0) {
    1.22              cout << "Zpráva odeslána." << endl;
    1.23          } else {
    1.24 @@ -92,7 +94,7 @@
    1.25  }
    1.26  
    1.27  void zpracujSignal(int signal) {
    1.28 -    if (signal == SIGTERM || signal == SIGINT) {
    1.29 +    if (signal == SIGTERM || signal == SIGINT || signal == SIGHUP) {
    1.30          fronta.zavriFrontu(false);
    1.31          cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená
    1.32          exit(1);