Zpracování signálu SIGTERM → vypsání hlášky a ukončení programu.
5 * Created on 1. duben 2009, 23:54
11 #include <c++/4.3.2/iostream>
13 #include <readline/readline.h>
19 * Spuštění programu „POSIXovéFronty“
23 cout << "Vítejte v programu POSIXovéFronty" << endl;
25 signal(SIGTERM, zpracujSignal);
27 mq_vlastnosti.mq_maxmsg = POCET_ZPRAV_VE_FRONTE;
28 mq_vlastnosti.mq_msgsize = DELKA_ZPRAVY;
31 //cout << "maxmsg: " << ma.mq_maxmsg;
32 //cout << "msgsize: " << ma.mq_msgsize;
37 //cout << NAZEV_FRONTY << endl;
39 if (isOdesilaciRezim()) {
49 return (EXIT_SUCCESS);
52 bool isOdesilaciRezim() {
53 //char *odpoved = readline("Zvolte režim: (p)řijímací / (o)desílací");
55 cout << "Zvolte režim: (p)řijímací / (o)desílací" << endl;
57 char odpoved = cin.get();
62 } else if (odpoved == 'p') {
65 return isOdesilaciRezim();
70 cout << "odesíláme" << endl;
74 mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDWR | O_CREAT, S_IRWXU | S_IRWXG, &mq_vlastnosti);
76 char zprava[] = "zpráva";
78 int vysledek = mq_send(fronta, zprava, strlen(zprava) + 1, 0);
80 cout << "Zpráva odeslána" << endl;
82 cout << "Při odesílání zprávy došlo k chybě" << endl;
91 cout << "přijímáme" << endl;
93 mqd_t fronta = mq_open(NAZEV_FRONTY, O_RDONLY);
94 char s[DELKA_ZPRAVY + 1];
95 s[DELKA_ZPRAVY] = '\0';
96 if (mq_receive(fronta, s, DELKA_ZPRAVY, NULL) > 0) {
97 printf("Přijatá zpráva: %s\n", s);
99 cout << "Nepodařilo se přijmout zprávu" << endl;
102 //mq_unlink(NAZEV_FRONTY);
106 void zpracujSignal(int signal) {
107 if (signal == SIGTERM) {
108 cout << "Končím program na základě signálu " << signal << endl;