Zpracování signálu SIGTERM → vypsání hlášky a ukončení programu.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Sun, 05 Apr 2009 21:08:09 +0200
changeset 4fb862232e704
parent 3 64edc459a9c5
child 5 a6822e6dd2ca
Zpracování signálu SIGTERM → vypsání hlášky a ukončení programu.
c++/POSIXoveFronty/Fronta/program.cpp
c++/POSIXoveFronty/Fronta/program.h
     1.1 --- a/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 12:56:59 2009 +0200
     1.2 +++ b/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 21:08:09 2009 +0200
     1.3 @@ -11,13 +11,19 @@
     1.4  #include <c++/4.3.2/iostream>
     1.5  #include <mqueue.h>
     1.6  #include <readline/readline.h>
     1.7 +#include <signal.h>
     1.8  
     1.9  using namespace std;
    1.10  
    1.11 +/**
    1.12 + * Spuštění programu „POSIXovéFronty“
    1.13 + */
    1.14  int main() {
    1.15  
    1.16      cout << "Vítejte v programu POSIXovéFronty" << endl;
    1.17  
    1.18 +    signal(SIGTERM, zpracujSignal);
    1.19 +
    1.20      mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
    1.21      mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
    1.22  
    1.23 @@ -69,9 +75,14 @@
    1.24  
    1.25      char zprava[] = "zpráva";
    1.26  
    1.27 -    mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    1.28 +    int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0);
    1.29 +    if (vysledek == 0) {
    1.30 +        cout << "Zpráva odeslána" << endl;
    1.31 +    } else {
    1.32 +        cout << "Při odesílání zprávy došlo k chybě" << endl;
    1.33 +    }
    1.34  
    1.35 -    cin.get();
    1.36 +    //cin.get();
    1.37  
    1.38      mq_close(fronta);
    1.39  }
    1.40 @@ -90,6 +101,12 @@
    1.41  
    1.42      //mq_unlink(NAZEV_FRONTY);
    1.43      mq_close(fronta);
    1.44 +}
    1.45  
    1.46 +void zpracujSignal(int signal) {
    1.47 +    if (signal == SIGTERM) {
    1.48 +        cout << "Končím program na základě signálu " << signal << endl;
    1.49 +        exit(1);
    1.50 +    }
    1.51 +}
    1.52  
    1.53 -}
     2.1 --- a/c++/POSIXoveFronty/Fronta/program.h	Sun Apr 05 12:56:59 2009 +0200
     2.2 +++ b/c++/POSIXoveFronty/Fronta/program.h	Sun Apr 05 21:08:09 2009 +0200
     2.3 @@ -30,6 +30,8 @@
     2.4       */
     2.5      bool isOdesilaciRezim();
     2.6  
     2.7 +    void zpracujSignal(int signal);
     2.8 +
     2.9  #ifdef	__cplusplus
    2.10  }
    2.11  #endif