//----------------------------------------------------------------------------- // signal-wait.h //----------------------------------------------------------------------------- #include #include #include #include #include #include //----------------------------------------------------------------------------- void usuario() { signal(SIGUSR1, SIG_IGN); boost::fibers::fiber t([] { raise(SIGUSR1); }); t.join(); } //----------------------------------------------------------------------------- void nucleo() { pthread_t parent = pthread_self(); signal(SIGUSR1, SIG_IGN); std::thread t([&] { pthread_kill(parent, SIGUSR1); }); t.join(); } //----------------------------------------------------------------------------- void proceso() { pid_t parent = getpid(); if (fork()) { signal(SIGUSR1, SIG_IGN); wait(nullptr); } else { kill(parent, SIGUSR1); exit(0); } } //-----------------------------------------------------------------------------