-1
私は、父親がユーザーに数値の階乗を計算するために数値を挿入するように求めるプログラムを書いています。その数はfactorial.cC exec関数とパイプで他のプログラムの結果を得る方法
で計算されるので、私は何をする必要があるかを推測です:
ユーザーに番号を尋ねる-Father:
数を読み、数を計算-Factorial.c
-Do出力を
// 2 Pipe and Fork created
if(x == 0){ //Father
close(p1[0]);
write(p1[1],&number_by_keybord, BUFFER);
close(p1[1]);
close(p[1]);
dup2(p[0],0); //Read the number returned by factorial.c
read(p[0], &num_factorial,BUFFER);
printf("Pipe: factorial %d\n", num_factorial);
close(p[0]);
wait(NULL);
}else{
execlp("./factorial", "factorial", NULL);
perror("Exec error\n");
}
をリダイレクトするdup2の計算数を書き込む-Factorial.c 0
そして今factorial.c
void main(){
read(0,&num,sizeof(int));
//Number calculated
write(1,&result,sizeof(int));
return 0;
}
しかし、私は、プログラムがフリーズを実行するか、単にdup2の持つ任意のproblemaはあり
を計算乱数を置きますか?私は正しい結果を得るためにdup2(、0)を実行しなければならず、階乗で私は読み書きが必要です。
ありがとう!
どうすればよいですか?私はここに質問が表示されません。質問は疑問符(***?***)で終了します – abelenky
問題を再現するのに十分なコードを提示していません。 –
残りのコードは、パイプとフォークを作成するメソッド、ユーザー(number_by_keybord)の数値とfactorial.cの階乗を計算するためのメソッドです。おそらく、私はdupを使うためにもっとコードが必要です。 factorial.cの結果を得るために...しかし、私は必要がないと思う。収穫? – Joseph