|
|
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.