0
私は基本的なエクササイズにパイプを使い始めました。プロセスAとBから、2つの乱数が得られます。プロセスCはこれらの2つの数値の和を計算し、それを印刷します。 問題は、読み込みから正しい値を取得できないことです。パイプに入力する値は終了する値ではありません。パイプが正確な情報を送信していません
ここで問題は何ですか?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(){
int ac[2],bc[2];
int f,g;
if(pipe(ac)<0 || pipe(bc)<0){
perror("Pipe error");
exit(1);
}
f=fork();
if(f<0){
perror("Error fork1");
exit(2);
}
if(f==0){
g=fork();
if(g<0){
perror("Error fork2");
exit(3);
}
if(g==0){
printf("We are in A \n");
int variab=rand()%11+10;
printf("Here we found the number %d\n",variab);
write(ac[1],&variab,sizeof(int));
}
else{
wait(0);
printf("We are in B\n");
int variab2=rand()%6+5;
printf("Here we found the number %d\n",variab2);
write(bc[1],&variab2,sizeof(int));
}
}
else{
wait(0);
printf("We are in C\n");
int suma;
int s1=read(ac[0],&s1,sizeof(int));
printf("S1=%d\n",s1);
int s2=read(bc[0],&s2,sizeof(int));
printf("S2=%d\n",s2);
suma=s1+s2;
printf("Sum is %d\n",suma);
}
close(ac[0]);
close(ac[1]);
close(bc[0]);
close(bc[1]);
return 0;
}
int s1 = read(ac [0]、&s1、sizeof(int)); '可能ですか? 'int s1のようなものでなければならない。 read(ac [0]、&s1、sizeof(int)); '? –
本当に、私はあなたよりも慎重ではなかった – Darkmer