# HG changeset patch # User František Kučera # Date 1239140942 -7200 # Node ID 18317e52d52bce78e565c13a43f04c393611f109 # Parent 1af54f006439ac88583475bb66b459320a17ca86 Odchytávání signálu SIGHUP → ukončení programu (po zavření terminálu) diff -r 1af54f006439 -r 18317e52d52b c++/POSIXoveFronty/Fronta/program.cpp --- a/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 13:09:28 2009 +0200 +++ b/c++/POSIXoveFronty/Fronta/program.cpp Tue Apr 07 23:49:02 2009 +0200 @@ -24,6 +24,7 @@ /** Nastavíme reakci na signál SIGTERM */ signal(SIGTERM, zpracujSignal); signal(SIGINT, zpracujSignal); + signal(SIGHUP, zpracujSignal); /** TODO: zeptat se na název fronty – readline */ //strcpy(nazevFronty, VYCHOZI_NAZEV_FRONTY); @@ -64,10 +65,11 @@ while (true) { /** TODO: načítat pomocí readline */ char zprava[100]; - cout << "Zadejte zprávu: \033[22;32m"; + cout << "Zadejte zprávu: \033[22;32m"; // zelená cin.getline(zprava, 100); cout << "\033[0m\n"; + /** TODO: ošetřit ctrl+d (zacyklení) */ if (fronta.odesliZpravu(zprava) == 0) { cout << "Zpráva odeslána." << endl; } else { @@ -92,7 +94,7 @@ } void zpracujSignal(int signal) { - if (signal == SIGTERM || signal == SIGINT) { + if (signal == SIGTERM || signal == SIGINT || signal == SIGHUP) { fronta.zavriFrontu(false); cout << endl << "\033[22;31m" << "Končím program na základě signálu " << signal << "." << "\033[0m" << endl; // červená exit(1);