It turns out that doing it was very bad. The amount of strange things going on is huge.
What's happened
shared_ptr use_count . PidManager, PidManager. shared_ptr (~ PidManager()) use_count . , GMan, exit(), PidManagerPtr_, use_count 0 PidManager. , PidManager , use_count 0, .
, instance_.reset() . 1. - shared_ptr PidManager. shared_ptr , exit(). instance_, reset(), PidManager.
shared_ptrs Meyers Singleton. :
void handler(int sig)
{
exit(1);
}
typedef PidManager * PidManagerPtr
PidManagerPtr PidManager::instance()
{
static PidManager instance_;
static bool handler_registered = false;
if(!handler_registered)
{
signal(SIGINT,handler);
handler_registered = true;
}
return &instance_;
}
exit PidManager_, . , PidManager .