![]() |
A signal handler must meet the requirements for a handler.
A value h of a signal handler class should work correctly in
the expression h(ec, n), where ec is an lvalue
of type const error_code and n is an lvalue of
type const int.
A free function as a signal handler:
void signal_handler(
const asio::error_code& ec,
int signal_number)
{
...
}
A signal handler function object:
struct signal_handler
{
...
void operator()(
const asio::error_code& ec,
int signal_number)
{
...
}
...
};
A lambda as a signal handler:
my_signal_set.async_wait(
[](const asio::error_code& ec,
int signal_number)
{
...
});
A non-static class member function adapted to a signal handler using std::bind():
void my_class::signal_handler(
const asio::error_code& ec,
int signal_number)
{
...
}
...
my_signal_set.async_wait(
std::bind(&my_class::signal_handler,
this, std::placeholders::_1,
std::placeholders::_2));
A non-static class member function adapted to a signal handler using boost::bind():
void my_class::signal_handler(
const asio::error_code& ec,
int signal_number)
{
...
}
...
my_signal_set.async_wait(
boost::bind(&my_class::signal_handler,
this, asio::placeholders::error,
asio::placeholders::signal_number));