Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
- int main(void)
- {
- int fd1[2], fd2[2], fd3[2];//для чего массив?
- pid_t childpid1; // имя типа ID
- pid_t childpid2;
- pipe(fd1);// первый канал для чета
- pipe(fd2);// второй канал для передачи нечет
- pipe(fd3);
- childpid1 = fork();// создаем процесс
- char c = 1;
- // если несовсем понятно что
- if (childpid1 == 0) {
- //открываем второй процесс
- childpid2 = fork();
- // если же этот второй процесс не заполнен
- if (childpid2 == 0) {
- //закрываем - что это за массив?
- close(fd1[0]);
- close(fd3[1]);
- do {
- //читаем первый элемент, а вот что после запятой?
- read(fd3[0], &c, 1);
- //выводим на консоль - это я уберу пожалуй
- printf("3) %d\n", (int)c); // а здесь объединение их в один
- //переходим к следующему
- c += 1;
- //записываем на следующее свободное место
- write(fd1[1], &c, 1);
- } while (c <= 100); // и все это пока не дойдем до 100, как и было задано
- } else {
- close(fd3[0]);//закрываем их(что-то вроде очистки?)
- close(fd2[1]);
- do {
- read(fd2[0], &c, 1);
- printf("2) %d\n", (int)c); // проделываем тоже со вторым потоком, а это чет
- c += 1;
- write(fd3[1], &c, 1);
- } while (c < 100);
- }
- } else {
- close(fd1[1]);
- close(fd2[0]);
- do {
- printf("1) %d\n", (int)c);
- c += 1;
- if (c < 101) { // подозреваю, что это нечет
- write(fd2[1], &c, 1);
- read(fd1[0], &c, 1);
- }
- } while (c <= 100);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement