// This code needs to really block all the signals, not just the user-visible // ones. We call __rt_sigprocmask(2) directly so we don't mask out our own // signals (https://issuetracker.google.com/153624226 was a pthread_exit(3) // crash because a request to dump the thread's stack came in as it was exiting). extern"C"int __rt_sigprocmask(int, const sigset64_t*, sigset64_t*, size_t);
class ScopedSignalBlocker { public: // Block all signals. explicit ScopedSignalBlocker() {
sigset64_t set;
sigfillset64(&set);
__rt_sigprocmask(SIG_BLOCK, &set, &old_set_, sizeof(sigset64_t));
}
// Block just the specified signal. explicit ScopedSignalBlocker(int signal) {
sigset64_t set = {};
sigaddset64(&set, signal);
__rt_sigprocmask(SIG_BLOCK, &set, &old_set_, sizeof(sigset64_t));
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.