// Maps regular signals like SIGSEGV to strings like "Segmentation fault". // Signal 0 and all the real-time signals are just nullptr, but that's the ABI. constchar* const sys_siglist[NSIG] = { #define __BIONIC_SIGDEF(signal_number, signal_description) [signal_number] = signal_description, #include"private/bionic_sigdefs.h"
};
// Maps regular signals like SIGSEGV to strings like "SEGV". // Signal 0 and all the real-time signals are just nullptr, but that's the ABI. constchar* const sys_signame[NSIG] = { #define __BIONIC_SIGDEF(signal_number, unused) [signal_number] = &(#signal_number)[3], #include"private/bionic_sigdefs.h"
};
int sig2str(int sig, char* str) { if (sig >= SIGHUP && sig <= SIGSYS) {
strcpy(str, sys_signame[sig]); return0;
} if (sig == SIGRTMIN) {
strcpy(str, "RTMIN"); return0;
} if (sig == SIGRTMAX) {
strcpy(str, "RTMAX"); return0;
} if (sig > SIGRTMIN && sig < SIGRTMAX) { if (sig - SIGRTMIN <= SIGRTMAX - sig) {
sprintf(str, "RTMIN+%d", sig - SIGRTMIN);
} else {
sprintf(str, "RTMAX-%d", SIGRTMAX - sig);
} return0;
} return -1;
}
int str2sig(constchar* str, int* sig) { // A name in our list, like "SEGV"? for (size_t i = SIGHUP; i <= SIGSYS; ++i) { if (!strcmp(str, sys_signame[i])) {
*sig = i; return0;
}
}
// The two named special cases? if (!strcmp(str, "RTMIN")) {
*sig = SIGRTMIN; return0;
} if (!strcmp(str, "RTMAX")) {
*sig = SIGRTMAX; return0;
}
// Must be either an integer corresponding to a regular signal such as "9", // or a string of the form "RTMIN+%d" or "RTMAX-%d". int base = 0; if (!strncmp(str, "RTMIN+", 6)) {
base = SIGRTMIN;
str += 5;
} elseif (!strncmp(str, "RTMAX-", 6)) {
base = SIGRTMAX;
str += 5;
} char* end = nullptr;
errno = 0; int offset = strtol(str, &end, 10); if (errno || *end) return -1;
// Reject out of range integers (like "666"), // and out of range real-time signals (like "RTMIN+666" or "RTMAX-666"). int result = base + offset; bool regular = (base == 0 && result >= SIGHUP && result <= SIGSYS); bool realtime = (result >= SIGRTMIN && result <= SIGRTMAX); if (!regular && !realtime) return -1;
*sig = result; return0;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-06-28)
¤
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.