Мне нужно создать короткую программу, которая создает два дочерних процесса, каждый из которых принимает целое число с клавиатуры и записывает их в конвейер, откуда родительский процесс суммирует их и отображает результат на экране.
Я написал один с помощью scanf (), но он зависает и не дает мне суммы. Как мне заставить его работать с scanf или любым другим способом, если это возможно?
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int pipe(int pd[2]);
int main(int argc, char *argv[])
{
int pd[2], sum=0, num=0;
if(pipe(pd) == -1)
for(int i = 0; i < 2; i++)
{
if(fork() == 0)
{
scanf("%d", num);
if(write(pd[1], &num, sizeof(int)) == -1)
printf("Error: Write()");
}
}
for(int j = 0; j < 2; j++)
{
wait(NULL);
if(read(pd[0], &num, sizeof(int)) == -1)
printf("Error: Read()");
sum += num;
}
printf("Total: %d\n", sum);
}