set.c 510 B

1234567891011121314151617181920212223242526272829
  1. /* $Id$ */
  2. /*
  3. Test combination of signal and setjmp/longjmp
  4. */
  5. #include <setjmp.h>
  6. #include <signal.h>
  7. jmp_buf jb;
  8. void a(), b();
  9. main()
  10. {
  11. char c;
  12. signal( SIGINT, a );
  13. signal( SIGQUIT, b );
  14. switch( setjmp( jb ) ) {
  15. case 0: write( 1, "start\n", 6 ); break;
  16. case 1: write( 1, "int\n", 4 ); break;
  17. case 2: write( 1, "quit\n", 5 ); break;
  18. }
  19. while(read(0, &c, 1));
  20. }
  21. void a(){ signal( SIGINT, a ); longjmp( jb, 1 ); }
  22. void b(){ signal( SIGQUIT, b ); longjmp( jb, 2 ); }