#include <iostream> #include <thread> #include <signal.h> using namespace std; void handler(int) { cout << "boom~" << endl; exit(42); } void _set_handler(int sig) { struct sigaction sact; sact.sa_handler = &handler; sigaction(sig, &sact, nullptr); } template<typename... I> void set_handler(I... signals) { [](...){}( (_set_handler(signals),0)... ); } struct ThisIsAType { int a_{42}; ~ThisIsAType() { a_ = 0; cout << "Destructor fires" << endl; } }; ThisIsAType a_type{}; void runme() { while(true) { cout << a_type.a_ << endl; } } int main() { set_handler(SIGTERM, SIGINT); thread t1{runme}; t1.detach(); while(true) continue; }
Mar 31, 2015
[C++11/14] gap between exit releasing resource and other thread still running
Darn python bug while calling exit in signal handler.
Labels:
cpp,
cpp11,
cpp11_thread,
cpp14,
cpp14_thread,
python
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.