hi, I try to intercept real-time signals (SIGMIN + 1, SIGMIN +2 ...) it works when I send a signal (kill -35 PID) it works well only if i send one signal, when i send another signal or same signal second time (kill -35 PID) the pogram does not intercept the signal I feel that run () stops the service after having received the first signal Thank you for your help, Here are the code: #define SIG1 (SIGRTMIN + 1) #define SIG1 (SIGRTMIN + 2) ... class Agent { ... signal_handler(const boost::system::error_code& error, int signal_number) {...} ... } ... boost::asio::signal_set signals(io_serv); signals.add(SIG1) signals.add(SIG2) ... signals.async_wait( boost::bind(&Agent::signal_handler, this, boost::asio::placeholders::error, boost::asio::placeholders::signal_number)); io_serv.run(); for (;;) { std::this_thread::yield(); } (I use Linux and g++) -- Merci d'avance Halim DJERROUD