SYNOPSIS
Attach a delegate function to the exit handler event.
top
Attach a delegate function to the exit handler event.
#include <omni/application.hpp>
void omni::application::exit_handler::attach(const omni::callback& exit_func)
top
DESCRIPTION
When a delegate is attached to the underlying exit handler, the delegate will be invoked before the application terminates in the order it was attached.
top
When a delegate is attached to the underlying exit handler, the delegate will be invoked before the application terminates in the order it was attached.
top
ERRORS
If an exception occurs on an attached delegate, it will be handled according to
top
If an exception occurs on an attached delegate, it will be handled according to
omni::sync::user_thread_exception and omni::sync::unhandled_thread_exception.
top
CONSIDERATIONS
This function will only have an effect if you have explicitly called one of the
top
This function will only have an effect if you have explicitly called one of the
omni::application::run functions to block the main thread until program completion.
top
NOTES
Be aware that the
top
Be aware that the
std::atexit function will call any functions in the reverse order registered. So if omni::application::run is called after any other calls to register a function with std::atexit in user code, then the underlying exit handler event will be called accordingly in the order attached; in other words, if you were to call std::atexit(&some_function) then attach an exit handler and call omni::application::run, the Omni exit handler will be called first, then some_function last.
top
EXAMPLE
top
#include <omni/application> void app_exit() { std::cout << "Application exiting" << std::endl; } void app_shutdown() { std::cout << "Application shutting down" << std::endl; } void app_run() { std::cout << "Leaving, waiting for CTRL+C" << std::endl; } int main(int argc, const char* argv[]) { omni::application::exit_handler::attach(&app_exit); omni::application::shutdown_handler::attach(&app_shutdown); return omni::application::run(&app_run); }Visit the examples page for more.
top