C Обвязка детей и родителей с использованием dup2 - PullRequest
0 голосов
/ 01 сентября 2018

Я практикую соединение двух процессов вместе. Я хочу, чтобы оба процесса общались друг с другом по двум каналам. Вот что у меня есть:

#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;
}

Я бы хотел, чтобы оба процесса связывались друг с другом, когда вход одного процесса был выходом другого. Я правильно настроил это? Если да, то куда я мог бы пойти отсюда, если, например, я бы хотел, чтобы родитель отправлял целые числа потомку, а потомок должен был выполнять над ними операции, а затем отправлять их родителю для печати. ​​

Спасибо.

...