Помогите написать прогу которыя высчитывает заданную функцию в 3 форках с использованием пайпов
#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
using namespace std;
int main(int argv, char *argc[])
{
int n,k;
int faktN,faktK,pow;
int fd1[2],fd2[2],fd3[2];
int pr1,pr2,pr3;
pr1=fork();
if(pr1==0)
{
pipe(fd1);
dup2(fd1[1],1);
execl("fakt",argc[1]);
close(fd1[1]);
}
pr2=fork();
if (pr2==0)
{
pipe(fd2);
dup2(fd2[1],1);
execl("fakt",argc[2]);
close(fd2[1]);
}
pr3=fork();
if (pr3==0)
{
pipe (fd3);
dup2(fd3[1],1);
execl("pow",argc[1],argc[1],argc[2]);
close(fd3[1]);
}
char buf1[50];
char buf2[50];
char buf3[50];
read(fd1[0],buf1,sizeof(buf1));
read(fd2[0],buf2,sizeof(buf2));
read(fd3[0],buf3,sizeof(buf3));
cout<<buf1<<" "<<buf2<<" "<<buf3<<endl;
/*
int rez;
faktN=atoi(buf1[1]);
faktK=atoi(buf2[1]);
pow=atoi(buf3[1]);
rez=(faktN-faktK)/pow;
cout<<rez<<endl;
*/
return 0;
}
явно нужно организовать ожидание завершения дочернего процесса. Но как это сделать пока я не понял.
Помогите плз !