diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/demo/Ice/minimal/Server.cpp | 15 | ||||
-rw-r--r-- | cpp/include/IceUtil/IceUtil.h | 1 |
2 files changed, 15 insertions, 1 deletions
diff --git a/cpp/demo/Ice/minimal/Server.cpp b/cpp/demo/Ice/minimal/Server.cpp index 6b2e4874689..e7ff72db23e 100644 --- a/cpp/demo/Ice/minimal/Server.cpp +++ b/cpp/demo/Ice/minimal/Server.cpp @@ -7,16 +7,29 @@ // // ********************************************************************** +#include <IceUtil/IceUtil.h> #include <HelloI.h> #include <Ice/Ice.h> using namespace std; +static Ice::CommunicatorPtr communicator; + +static void +onCtrlC(int) +{ + if(communicator) + { + communicator->shutdown(); + } +} + int main(int argc, char* argv[]) { int status = EXIT_SUCCESS; - Ice::CommunicatorPtr communicator; + + IceUtil::CtrlCHandler ctrCHandler(onCtrlC); try { diff --git a/cpp/include/IceUtil/IceUtil.h b/cpp/include/IceUtil/IceUtil.h index 4ece43936c9..d686c762d12 100644 --- a/cpp/include/IceUtil/IceUtil.h +++ b/cpp/include/IceUtil/IceUtil.h @@ -34,5 +34,6 @@ #include <IceUtil/OutputUtil.h> #include <IceUtil/Options.h> #include <IceUtil/Random.h> +#include <IceUtil/CtrlCHandler.h> #endif |