
1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/types.h> 4 #include <sys/wait.h> 5 #include <unistd.h> 6 7 void client(int, int), server(int, int); 8 9 int main(int argc, char **argv) 10 { 11 int pipe1[2], pipe2[2]; 12 pid_t childpid; 13 pipe(pipe1); 14 pipe(pipe2); 15 if ( (childpid = fork()) == 0) { 16 close(pipe1[1]); 17 close(pipe2[0]); 18 server(pipe1[0], pipe2[1]); 19 exit(0); 20 } 21 22 close(pipe1[0]); 23 close(pipe2[1]); 24 client(pipe2[0], pipe1[1]); 25 waitpid(childpid, NULL, 0); 26 27 exit(0); 28 }

1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 5 #define MAXLINE 1024 6 7 void client(int readfd, int writefd) 8 { 9 size_t len; 10 ssize_t n; 11 char buff[MAXLINE]; 12 13 while(NULL != fgets(buff, MAXLINE, stdin)) 14 { 15 len = strlen(buff); 16 if (buff[len-1] == ' ') 17 len--; 18 19 write(writefd, buff, len); 20 21 if(0 != read(readfd, buff, MAXLINE)) 22 { 23 fputs(buff, stdout); 24 } 25 } 26 }

1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 5 #define MAXLINE 1024 6 7 void server(int readfd, int writefd) 8 { 9 ssize_t n; 10 char buff[MAXLINE+1]; 11 12 while(1) 13 { 14 if ( (n = read(readfd, buff, MAXLINE)) == 0) 15 { 16 printf("end-of-file while reading pathname"); 17 return; 18 } 19 buff[n] = '