può essere, è possibile dichiarare una matrice globale, come questo
char *signame[]={"INVALID", "SIGHUP", "SIGINT", "SIGQUIT", "SIGILL", "SIGTRAP", "SIGABRT", "SIGBUS", "SIGFPE", "SIGKILL", "SIGUSR1", "SIGSEGV", "SIGUSR2", "SIGPIPE", "SIGALRM", "SIGTERM", "SIGSTKFLT", "SIGCHLD", "SIGCONT", "SIGSTOP", "SIGTSTP", "SIGTTIN", "SIGTTOU", "SIGURG", "SIGXCPU", "SIGXFSZ", "SIGVTALRM", "SIGPROF", "SIGWINCH", "SIGPOLL", "SIGPWR", "SIGSYS", NULL};
e può essere utilizzato per stampare il nome del segnale nel gestore di segnale, come
void sig_handler(int signum){
printf("Received signal : %s\n", signame[signum]);
}
In my/usr/include/sys/signal.h', tutti i nomi dei segnali sono solo costanti '# define'd. Ciò significa che il preprocessore li ha già sostituiti con numeri interi costanti al momento dell'esecuzione del compilatore - il nome simbolico * non esiste * per quanto riguarda il programma. Che cosa stai cercando di fare esattamente qui? –
@CarlNorum, niente di speciale, solo un'uscita di fantasia. Pensavo che i nomi attuali potessero essere archiviati da qualche altra parte in modo da poterli ottenere. –
Se vuoi "output di fantasia", non è esattamente ciò che è "strsignal"? –