Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <sys/wait.h>
  3. #include <inttypes.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <fcntl.h>
  7.  
  8. int main (int argc, char * argv[]) {
  9.     int fd[2];
  10.     pipe(fd);
  11.     int pidSFir, pidSSec;
  12.     if (!(pidSFir = fork())) {
  13.         int pidGSFir, pidGSSec;
  14.         close(fd[0]);
  15.         dup2(fd[1], 1);
  16.         close(fd[1]);
  17.         if (!(pidGSFir = fork())) {    
  18.             execlp(argv[1], argv[1], NULL);
  19.             return -1;
  20.         }
  21.         waitpid(pidGSFir, NULL, 0);
  22.         if (!(pidGSSec = fork())) {
  23.             execlp(argv[2], argv[2], NULL);
  24.             return -1;
  25.         }
  26.         close(fd[1]);
  27.         waitpid(pidGSSec, NULL, 0);
  28.         _exit(0);
  29.     }
  30.     close(fd[1]);
  31.     if (!(pidSSec = fork())) {
  32.         int flDes = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC, 0222);
  33.         dup2(flDes, 1);
  34.         close(flDes);
  35.         dup2(fd[0], 0);
  36.         close(fd[0]);
  37.         execlp(argv[3], argv[3], NULL);
  38.         return -1;
  39.     }
  40.     close(fd[0]);
  41.     waitpid(pidSFir, NULL, 0);
  42.     waitpid(pidSSec, NULL, 0);
  43.     return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement