Advertisement
Guest User

198

a guest
May 23rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <sys/types.h>
  6.  
  7. int main(void)
  8. {
  9.         int     fd1[2], fd2[2], fd3[2];//для чего массив?
  10.         pid_t   childpid1; // имя типа ID
  11.         pid_t   childpid2;
  12.  
  13.  
  14.         pipe(fd1);// первый канал для чета
  15.         pipe(fd2);// второй канал для передачи нечет
  16.         pipe(fd3);
  17.  
  18.         childpid1 = fork();// создаем процесс
  19.  
  20.         char c = 1;
  21. // если  несовсем понятно что
  22.         if (childpid1 == 0) {
  23. //открываем второй процесс
  24.                 childpid2 = fork();
  25. // если же этот второй процесс не заполнен
  26.                 if (childpid2 == 0) {
  27. //закрываем - что это за массив?
  28.                         close(fd1[0]);
  29.                         close(fd3[1]);
  30.                         do {
  31. //читаем первый элемент, а вот что после запятой?
  32.                                 read(fd3[0], &c, 1);
  33. //выводим на консоль - это я уберу пожалуй
  34.                                 printf("3) %d\n", (int)c); // а здесь объединение их в один
  35. //переходим к следующему
  36.                                 c += 1;
  37. //записываем на следующее свободное место
  38.                                 write(fd1[1], &c, 1);  
  39.                         } while (c <= 100); // и все это пока не дойдем до 100, как и было задано
  40.                 } else {
  41.                         close(fd3[0]);//закрываем их(что-то вроде очистки?)
  42.                         close(fd2[1]);
  43.                         do {
  44.                                 read(fd2[0], &c, 1);
  45.                                 printf("2) %d\n", (int)c); // проделываем  тоже со вторым потоком, а это чет
  46.                                 c += 1;
  47.                                 write(fd3[1], &c, 1);
  48.                         } while (c < 100);
  49.                 }
  50.         } else {
  51.                 close(fd1[1]);
  52.                 close(fd2[0]);  
  53.                 do {
  54.                         printf("1) %d\n", (int)c);
  55.                         c += 1;
  56.                         if (c < 101) { // подозреваю, что это нечет
  57.                                 write(fd2[1], &c, 1);    
  58.                                 read(fd1[0], &c, 1);
  59.                         }
  60.                 } while (c <= 100);
  61.         }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement