1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#include <signal.h> #include <stdio.h> #include <errno.h> void trap() { write(1, "Ouch!!\n", 7); } main() { char buf[2]; int cc; signal(SIGINT, trap); while( (cc=read(0, buf, 1)) > 0 || (cc == -1 && errno == EINTR) ) { if( cc < 0 ) fprintf(stderr, "INTR\n"); else fprintf(stderr, "%x\n", buf[0]); } write(1, "\nExit!\n", 7); }