All pastes #945177 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-16 19:15 UTC
rendered paste body
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
 
int main(void) {
   pid_t childpid;

   int fd[2]; //file descriptor1
   int fd2[2]; //file descriptor2


   if ((pipe(fd)==-1) || pipe(fd2) == -1) { 
     printf(" pipe failed \n" );
   }

   childpid = fork();

   //CAT
   if (childpid==0) {
     if (dup2(fd[1] , 1) == -1) { 
       perror("Failed to redirect stdout of ls");
     }
     else if ((close(fd[0]) == -1) || (close(fd[1]) == -1)) {
       perror("failed at closing");
     }
     else { 
       if (execl("/bin/cat", "cat", "sortthis.txt", NULL) == -1) {
	 perror("catting test failed");
       }
     }
     return 1; 
   }

   childpid = fork();

   //SORT
   if (childpid == 0 ) {
     if ((dup2(fd[0], 0) == -1 ) || (dup2(fd2[1],1)==-1)) 
       perror("Failed to redirect stdin of sort");
     else if ((close(fd[0]) == -1) || (close(fd2[1]) == -1) ) {
       perror("failed at closing");
     }
     else {
       if (execl("/usr/bin/sort", "sort", "-r", NULL) == -1) {
	 perror("could not sort anything");
       }
     }
     return 1;
   }

   childpid = fork();
   
   //WORD COUNT
   if (childpid==0) {                              
     if (dup2(fd2[0] , 0) == -1) {
       perror("Failed to redirect stdout of  sort");
     }
     else if (close(fd2[0]) == -1) {
       perror("failed at closing");
     }
     else {
       if (execl("/usr/bin/wc", "wc", "-cl", NULL) == -1) {
         perror("catting sort output failed");
       }
     }
     return 1;
    }
   
   //Ignore parent for now...
   return 1; 
}