-1
我正在寫一個程序,父親要求用戶插入數字以計算數字的階乘。這個數字在factorial.c計算C如何使用exec函數和管道獲取其他程序的結果
,所以我想我需要做的是:
-father請一些用戶:
-Factorial.c閱讀次數並計算出數
-Factorial.c寫數計算
-Do一個DUP2重定向輸出
// 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");
}
而且現在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)和一個for來計算factorial.c中的階乘......也許我需要更多的代碼來使用dup和得到factorial.c的結果...但我想我不需要。 Sugestion? – Joseph