==== pipe.h ==== #include #include #define MAXLINE 40 #define LINES 11 ==== mainpipe.c ==== #include "pipe.h" void client(int, int), server(int, int); int main () { int pipe1[2], pipe2[2]; pid_t childpid; pipe(pipe1); pipe(pipe2); if((childpid = fork()) != 0) { close(pipe1[1]); close(pipe2[0]); server(pipe1[0], pipe2[1]); exit(EXIT_SUCCESS); } close(pipe1[0]); close(pipe2[1]); client(pipe2[0], pipe1[1]); waitpid(childpid, NULL, 0); exit(EXIT_SUCCESS); } ==== client.c ==== #include "pipe.h" void print_array(char *d[], int); void client(int readfd, int writefd) { int i=0,j; size_t len; ssize_t n; char buff[MAXLINE]; char word[LINES][MAXLINE]; FILE *infile; FILE *outfile; printf("input a file name : "); /* fgets(buff, MAXLINE, stdin);*/ /* len = strlen(buff);*/ /* if (buff[len - 1] =='\n')*/ /* len--;*/ /* infile = fopen("unsorted", "r");*/ infile = freopen("unsorted", "r",stdin); outfile = fopen("sorted", "w"); while(fgets(word[i], MAXLINE, infile) != (char*) NULL) { word[i][strlen(word[i])-1] = '\0'; i++; } printf("Before Sorted ... in client-side \n"); for(i = 0;i < LINES;i++){ printf("%d", len); for( j = 0; j <= 10; j++) buff[j] = word[i][j]; len = strlen(word[i]); buff[len] = '\n'; write(writefd, buff, len+1); } printf("\nAfter Sorted ... in client-side \n"); for (i =0; i < LINES ; i++){ n = read(readfd, buff, MAXLINE); /* write(STDOUT_FILENO, buff, n);*/ fwrite(buff,n,1,outfile); /* len = strlen(buff);*/ /* for( j = 0; j <= len; j++)*/ word[i][j]= buff[j]; } } void print_array(char *d[], int n) { int i; for(i=0;i 1; eff_size--) { for ( i = 0 ; i < eff_size ; i++) if (strcmp(data[i], data[maxpos]) > 0) maxpos = i; strcpy(tmp, data[maxpos]); strcpy(data[maxpos], data[eff_size-1]); strcpy(data[eff_size-1], tmp); } }