|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <signal.h> ! 3: int fd; ! 4: ! 5: catch(i) ! 6: int i; ! 7: { ! 8: char buf[32]; ! 9: ! 10: sprintf(buf, "signal %d\n", i); ! 11: write(fd, buf, strlen(buf)); ! 12: close(fd); ! 13: exit(1); ! 14: } ! 15: ! 16: main() ! 17: { ! 18: int i; ! 19: char c; ! 20: ! 21: unlink("/tmp/whatsup"); ! 22: fd = creat("/tmp/whatsup", 0666); ! 23: for (i = 0; i < 32; i++) ! 24: signal(i, catch); ! 25: signal(SIGHUP, SIG_IGN); ! 26: signal(SIGPIPE, SIG_IGN); ! 27: while(read(0, &c, 1)==1) { ! 28: if (write(1, &c, 1)!=1) { ! 29: write(fd, "ERROR 1\n", 8); ! 30: exit(1); ! 31: } ! 32: write(fd, &c, 1); ! 33: } ! 34: if(write(1, "EOF\n", 4)!=4) { ! 35: write(fd, "ERROR 2\n", 8); ! 36: exit(1); ! 37: } ! 38: write(fd, "EOF\n", 4); ! 39: exit(0); ! 40: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.