#include #include #include void foo (void); void bar (void); void subroutine (int); void handler (int); main () { puts ("Starting up"); foo (); puts ("Waiting to get a signal"); signal (SIGALRM, handler); alarm (1); sleep (2); puts ("Shutting down"); } void foo (void) { puts ("hi in foo"); } void bar (void) { char *nuller = 0; puts ("hi in bar"); *nuller = 'a'; /* try to cause a segfault */ } void handler (int sig) { subroutine (sig); } void subroutine (int in) { while (in < 100) in++; }