9af897fa3b
* Preserve interface of std::condition_variable through "perfect forwarding" * Decouple SignalHandler and AtomicCondition * Callback function for signals * Improve readme * Bump version to v0.2 |
||
---|---|---|
build | ||
cmake | ||
include/sgnl | ||
test | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
Signal handler for multithreaded C++ applications on Linux
Signal handler that uses pthread_sigmask and sigwait.
Dependencies
- C++17
- Clang or GCC
- linux
- pthread
- cmake (recommended, but optional)
Example usage
{
// Block signals
sgnl::SignalHandler signal_handler({SIGINT, SIGINT});
// Wait for a signal
int signal_number = signal_handler.sigwait();
// Or, pass a handler
auto handler = [](int signum) {
if( signum == SIGINT )
// continue waiting for signals
return false;
if( signum == SIGTERM )
// stop waiting for signals
return true;
};
int last_signal = signal_handler.sigwait_handler(handler);
} // signals are unblocked again
Build & Install
mkdir -p build/ && cd build/
cmake ..
# build and run tests
make sgnl-test && ./test/sgnl-test
# install headers and CMake config
make install