Advertisement
hascas

Untitled

May 7th, 2020
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.75 KB | None | 0 0
  1. //Pipe commands #4 din setul CV
  2. ---------------------------------------------------------------------------------
  3. #fisierul cv1.1.c
  4. ---------------------------------------------------------------------------------
  5.  
  6. #include <unistd.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <fcntl.h>
  10. #include <errno.h>
  11.  
  12. int main()
  13. {
  14.     pid_t pid;
  15.     int p[2];
  16.  
  17.     if(-1 == pipe(p) )
  18.     {
  19.         fprintf(stderr, "Eroare: nu pot crea un canal anonim, errno=%d\n",errno);  perror("Cauza erorii");  exit(1);
  20.     }
  21.  
  22.     if(-1 == (pid=fork()) )
  23.     {
  24.         perror("Eroare: nu am putut crea un fiu. Cauza erorii");  exit(2);
  25.     }
  26.  
  27.     if(pid == 0)
  28.     {
  29.         if(-1 == dup2(p[1],1) )
  30.         {
  31.             perror("Eroare: redirectarea iesirii standard in fiu a esuat. Cauza erorii");  exit(3);
  32.         }
  33.  
  34.         execlp("w", "w", "-h", NULL);
  35.         perror("Eroare la execlp() in fiu. Cauza erorii");  exit(4);
  36.     }
  37.     else
  38.     {
  39.         close(p[1]);
  40.  
  41.         if(-1 == dup2(p[0],0) )
  42.         {
  43.             perror("Eroare: redirectarea intrarii standard in parinte a esuat. Cauza erorii");  exit(5);
  44.         }
  45.  
  46.         execl("cv1.2.exe", "cv1.2", NULL);
  47.         perror("Eroare la execl() in parinte. Cauza erorii");  exit(6);
  48.     }
  49.  
  50.     return 0;
  51. }
  52.  
  53. ----------------------------------------------------------------------
  54. #fisierul cv1.2.c
  55. ----------------------------------------------------------------------
  56.  
  57. #include <unistd.h>
  58. #include <stdio.h>
  59. #include <stdlib.h>
  60. #include <fcntl.h>
  61. #include <errno.h>
  62.  
  63. int main()
  64. {
  65.     pid_t pid;
  66.     int p[2];
  67.  
  68.     if(-1 == pipe(p) )
  69.     {
  70.         fprintf(stderr, "Eroare: nu pot crea un canal anonim, errno=%d\n",errno);  perror("Cauza erorii");  exit(1);
  71.     }
  72.  
  73.     if(-1 == (pid=fork()) )
  74.     {
  75.         perror("Eroare: nu am putut crea un fiu. Cauza erorii");  exit(2);
  76.     }
  77.  
  78.     if(pid == 0)
  79.     {
  80.         if(-1 == dup2(p[1],1) )
  81.         {
  82.             perror("Eroare: redirectarea iesirii standard in fiu a esuat. Cauza erorii");  exit(3);
  83.         }
  84.  
  85.         execlp("tr", "tr", "-s", "\" \"", NULL);
  86.         perror("Eroare la execlp() in fiu. Cauza erorii");  exit(4);
  87.     }
  88.     else
  89.     {
  90.         close(p[1]);
  91.  
  92.         if(-1 == dup2(p[0],0) )
  93.         {
  94.             perror("Eroare: redirectarea intrarii standard in parinte a esuat. Cauza erorii");  exit(5);
  95.         }
  96.  
  97.         execl("cv1.3.exe","cv1.3",NULL);
  98.         perror("Eroare la execl() in parinte. Cauza erorii"); exit(6);
  99.  
  100.     }
  101.  
  102.     return 0;
  103. }
  104.  
  105.  
  106. ----------------------------------------------------------------------
  107. #fisierul cv1.3.c
  108. ----------------------------------------------------------------------
  109.  
  110. #include <unistd.h>
  111. #include <stdio.h>
  112. #include <stdlib.h>
  113. #include <fcntl.h>
  114. #include <errno.h>
  115.  
  116. int main()
  117. {
  118.     pid_t pid;
  119.     int p[2];
  120.  
  121.     if(-1 == pipe(p) )
  122.     {
  123.         fprintf(stderr, "Eroare: nu pot crea un canal anonim, errno=%d\n",errno);  perror("Cauza erorii");  exit(1);
  124.     }
  125.  
  126.     if(-1 == (pid=fork()) )
  127.     {
  128.         perror("Eroare: nu am putut crea un fiu. Cauza erorii");  exit(2);
  129.     }
  130.  
  131.     if(pid == 0)
  132.     {
  133.         if(-1 == dup2(p[1],1) )
  134.         {
  135.             perror("Eroare: redirectarea iesirii standard in fiu a esuat. Cauza erorii");  exit(3);
  136.         }
  137.  
  138.         execlp("cut", "cut", "-d\" \"", "-f1,8", NULL);
  139.         perror("Eroare la execlp() in fiu. Cauza erorii");  exit(4);
  140.     }
  141.     else
  142.     {
  143.         close(p[1]);
  144.  
  145.         if(-1 == dup2(p[0],0) )
  146.         {
  147.             perror("Eroare: redirectarea intrarii standard in parinte a esuat. Cauza erorii");  exit(5);
  148.         }
  149.  
  150.         execlp("sort","sort","-t", "\" \"", "-k","1", NULL);
  151.         perror("Eroare la execlp() in parinte. Cauza erorii");  exit(6);
  152.     }
  153.  
  154.     return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement