#include <stdio.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <errno.h> void trap(int no) { printf("signal: %d\n", no); exit(1); } int main() { struct sigaction sa; int *n; memset(&sa, 0, sizeof(struct sigaction)); sa.sa_handler = trap; if(sigaction(SIGSEGV, &sa, NULL) != 0) { perror("sigaction(2)"); exit(1); } puts("loop..."); while(1) { // 例のコード *n = 5; sleep(1); } return 0; }