#include #include #include #include #include #include #include int main(int argc, char **argv) { register int sock; register int bytes; struct sockaddr_in sa; char buf[BUFSIZ+1]; pid_t ppid = getppid(); if (argc != 3) { fprintf(stderr, "Usage: %s address port\n", argv[0]); return 1; } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); return 1; } sa.sin_family = AF_INET; sa.sin_port = htons(atol(argv[2])); sa.sin_addr.s_addr = inet_addr(argv[1]); if (connect(sock, (struct sockaddr *)&sa, sizeof sa) < 0) { perror("connect"); close(sock); return 2; } while ((bytes = read(sock, buf, BUFSIZ)) > 0) { if (kill(ppid, 0)) break; write(1, buf, bytes); } close(sock); return 0; }