void signal_init(void) { #ifndef WIN32 // Ensure a clean slate by unblocking all signals. For example, if SIGCHLD is // blocked, libuv may hang after spawning a subprocess on Linux. #5230 sigset_t mask; sigemptyset(&mask); if (pthread_sigmask(SIG_SETMASK, &mask, NULL) != 0) { ELOG("Could not unblock signals, nvim might behave strangely."); } #endif signal_watcher_init(&main_loop, &spipe, NULL); signal_watcher_init(&main_loop, &shup, NULL); signal_watcher_init(&main_loop, &squit, NULL); signal_watcher_init(&main_loop, &sterm, NULL); #ifdef SIGPIPE signal_watcher_start(&spipe, on_signal, SIGPIPE); #endif signal_watcher_start(&shup, on_signal, SIGHUP); #ifdef SIGQUIT signal_watcher_start(&squit, on_signal, SIGQUIT); #endif signal_watcher_start(&sterm, on_signal, SIGTERM); #ifdef SIGPWR signal_watcher_init(&main_loop, &spwr, NULL); signal_watcher_start(&spwr, on_signal, SIGPWR); #endif }
void signal_init(void) { signal_watcher_init(&loop, &spipe, NULL); signal_watcher_init(&loop, &shup, NULL); signal_watcher_init(&loop, &squit, NULL); signal_watcher_init(&loop, &sterm, NULL); signal_watcher_start(&spipe, on_signal, SIGPIPE); signal_watcher_start(&shup, on_signal, SIGHUP); signal_watcher_start(&squit, on_signal, SIGQUIT); signal_watcher_start(&sterm, on_signal, SIGTERM); #ifdef SIGPWR signal_watcher_init(&loop, &spwr, NULL); signal_watcher_start(&spwr, on_signal, SIGPWR); #endif }