# HG changeset patch # User František Kučera # Date 1239100211 -7200 # Node ID e1b7dbc6dc4ab033d73ccf404d864453eadc365e # Parent cd5d8916d9832403d7869c9adf074067cba58e50 Text zprávy pochází od uživatele. Přijímání i odesílání běží v nekonečných cyklech. diff -r cd5d8916d983 -r e1b7dbc6dc4a c++/POSIXoveFronty/Fronta/program.cpp --- a/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 01:47:16 2009 +0200 +++ b/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 12:30:11 2009 +0200 @@ -25,7 +25,7 @@ signal(SIGTERM, zpracujSignal); signal(SIGINT, zpracujSignal); - /** TODO: zeptat se na název fronty */ + /** TODO: zeptat se na název fronty – readline */ //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY); nazevFronty = "/mojeFronta"; @@ -36,9 +36,8 @@ prijimej(); } + /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */ fronta.zavriFrontu(false); - - /** Sem se nedostaneme, pokud metody poběží v cyklu – program končí, až když dostane patřičný signál. */ return (EXIT_SUCCESS); } @@ -62,13 +61,18 @@ cout << "Odesíláme…" << endl; fronta = Fronta(nazevFronty, false, true); - /** TODO: načíst ze standardního vstupu */ - char zprava[] = "zpráva"; + while (true) { + /** TODO: načítat pomocí readline */ + char zprava[100]; + cout << "Zadejte zprávu: \033[22;32m"; + cin.getline(zprava, 100); + cout << "\033[0m\n"; - if (fronta.odesliZpravu(zprava) == 0) { - cout << "Zpráva odeslána." << endl; - } else { - cout << "Při odesílání zprávy došlo k chybě." << endl; + if (fronta.odesliZpravu(zprava) == 0) { + cout << "Zpráva odeslána." << endl; + } else { + cout << "Při odesílání zprávy došlo k chybě." << endl; + } } } @@ -76,18 +80,21 @@ cout << "Přijímáme…" << endl; fronta = Fronta(nazevFronty, true, false); - char* zprava = fronta.prijmiZpravu(); + while (true) { + char* zprava = fronta.prijmiZpravu(); - if (zprava == NULL) { - cout << "Nepodařilo se přijmout zprávu." << endl; - } else { - printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava); + if (zprava == NULL) { + cout << "Nepodařilo se přijmout zprávu." << endl; + } else { + printf("Přijatá zpráva: \033[22;32m%s\033[0m\n", zprava); // zelená + } } } void zpracujSignal(int signal) { if (signal == SIGTERM || signal == SIGINT) { - cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; + fronta.zavriFrontu(false); + cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená exit(1); } }