#pragma CCOD:script no #define _XOPEN_SOURCE 700 #define _BSD_SOURCE #include #include #include #ifdef __CYGWIN__ /* compile with unpatched headers */ extern void psiginfo (const siginfo_t *, const char *); extern void psignal (int, const char *); extern const char *sys_siglist[]; #endif int main (void) { int i; char s[3]; siginfo_t info; info.si_code = 1111; for (i = 0; i < NSIG + 3; i++) { info.si_signo = i; switch (i) { case SIGILL: case SIGBUS: case SIGFPE: case SIGSEGV: info.si_addr = (void *)0x10000000; break; case SIGCHLD: info.si_status = 4; break; default: info.si_pid = 2222; info.si_uid = 3333; } sprintf(s, "%d", i); printf("%d: %s\n", i, sys_siglist[i]); printf("%d: %s\n", i, strsignal(i)); psignal(i, s); psiginfo(&info, s); } return 0; }