#include #include #include boost::asio::io_service::work* work; boost::asio::io_service service(1); boost::asio::signal_set signals(service); void handle_signal(int signal_number, const boost::system::error_code& error) { if (error) { std::cout << "Error happened: " << error.message() << std::endl; } else { std::cout << "Signal received: " << signal_number << std::endl; } delete work; service.stop(); } int main(int, char**) { work = new boost::asio::io_service::work(service); signals.add(SIGINT); signals.add(SIGTERM); signals.add(SIGQUIT); signals.async_wait( boost::bind(&handle_signal, boost::asio::placeholders::signal_number, boost::asio::placeholders::error)); service.run(); std::cout << "service is not running" << std::endl;; }