Zpracování signálu SIGTERM → vypsání hlášky a ukončení programu.
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