# HG changeset patch
# User František Kučera <franta-hg@frantovo.cz>
# Date 1238958489 -7200
# Node ID fb862232e704835ad887741ea10f95f13cab28e3
# Parent  64edc459a9c58403dec889e7cb041203e89541cf
Zpracování signálu SIGTERM → vypsání hlášky a ukončení programu.

diff -r 64edc459a9c5 -r fb862232e704 c++/POSIXoveFronty/Fronta/program.cpp
--- a/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 12:56:59 2009 +0200
+++ b/c++/POSIXoveFronty/Fronta/program.cpp	Sun Apr 05 21:08:09 2009 +0200
@@ -11,13 +11,19 @@
 #include <c++/4.3.2/iostream>
 #include <mqueue.h>
 #include <readline/readline.h>
+#include <signal.h>
 
 using namespace std;
 
+/**
+ * Spuštění programu „POSIXovéFronty“
+ */
 int main() {
 
     cout << "Vítejte v programu POSIXovéFronty" << endl;
 
+    signal(SIGTERM, zpracujSignal);
+
     mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
     mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
 
@@ -69,9 +75,14 @@
 
     char zprava[] = "zpráva";
 
-    mq_send(fronta, zprava, strlen(zprava) + 1, 0);
+    int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0);
+    if (vysledek == 0) {
+        cout << "Zpráva odeslána" << endl;
+    } else {
+        cout << "Při odesílání zprávy došlo k chybě" << endl;
+    }
 
-    cin.get();
+    //cin.get();
 
     mq_close(fronta);
 }
@@ -90,6 +101,12 @@
 
     //mq_unlink(NAZEV_FRONTY);
     mq_close(fronta);
+}
 
+void zpracujSignal(int signal) {
+    if (signal == SIGTERM) {
+        cout << "Končím program na základě signálu " << signal << endl;
+        exit(1);
+    }
+}
 
-}
diff -r 64edc459a9c5 -r fb862232e704 c++/POSIXoveFronty/Fronta/program.h
--- a/c++/POSIXoveFronty/Fronta/program.h	Sun Apr 05 12:56:59 2009 +0200
+++ b/c++/POSIXoveFronty/Fronta/program.h	Sun Apr 05 21:08:09 2009 +0200
@@ -30,6 +30,8 @@
      */
     bool isOdesilaciRezim();
 
+    void zpracujSignal(int signal);
+
 #ifdef	__cplusplus
 }
 #endif