Я практикую соединение двух процессов вместе. Я хочу, чтобы оба процесса общались друг с другом по двум каналам. Вот что у меня есть:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
int main(){
//setting up two pipes
int pipe1[2];
int pipe2[2];
pipe(pipe1);
pipe(pipe2);
//setting up child and parent
pid_t pid = fork();
if(pid < 0){
perror("fork failed\n");
exit(-1);
}
if(pid == 0){
printf("child\n");
dup2(pipe1[1], STDOUT_FILENO);
close(pipe1[1]);
close(pipe1[0]);
dup2(pipe2[0], STDIN_FILENO);
close(pipe2[0]);
close(pipe2[1]);
}
if(pid > 0){
wait(NULL);
printf("parent\n");
dup2(pipe1[0], STDIN_FILENO);
close(pipe1[0]);
close(pipe2[1]);
dup2(pipe2[1], STDOUT_FILENO);
close(pipe2[0]);
close(pipe2[1]);
}
return 0;
}
Я бы хотел, чтобы оба процесса связывались друг с другом, когда вход одного процесса был выходом другого. Я правильно настроил это? Если да, то куда я мог бы пойти отсюда, если, например, я бы хотел, чтобы родитель отправлял целые числа потомку, а потомок должен был выполнять над ними операции, а затем отправлять их родителю для печати.
Спасибо.