我們將程式分為兩個部分
1.主程式bcmain.c
#include "headall.h"
/* * 實現bc程式:其主要功能是用來進行加減乘除的運算
* 其本質是乙個客戶端/伺服器的模型
*
* +---------+ pipe->dc +----------+
* stdin 0 >**********==> |
* | bc | | dc |
* stdout1 <**********==< |
* +---------+ pipe<-dc +----------+
*
* 使用者首先會連線到bc並將bc連線到dc,呼叫dc程式後返回結果
* 該程式包括四個主要方面
* 1. bc與dc之間通過管道通訊:由於管道是單向的,因此要建立兩個管道。
* 2. 建立乙個新的程序來執行dc
* 3. 在新程序中,由於我們要execlp shell的dc程式,dc程式的輸入是標準輸入,
* dc程式的輸出是標準輸出,而我們希望重定向這兩個到管道
*
* 4. 在父程序中,我們會讀取使用者的輸入,進行解析,將命令通過管道傳給dc
* dc進行讀取資料,返回結果給bc,bc顯示給使用者
* * 3 4 5 6
* | | | |
* | | | |
* | | | |
* +———+ +--+
* */
int main()
}
2.處理程式proclib.c
#include "headall.h"
int dc_deal(int *,int *);
int bc_deal(int *,int *);
/* * review 匿名管道
* pipe(array[2]);
* 建立乙個管道,並為這個陣列的兩個元素建立檔案描述符
* 這裡要注意:
* array[0] 是從管道中讀取資料
* array[1] 是向管道中寫資料
* */
//父程序的處理函式
int bc_deal(int *todc,int *fromdc)
//printf("op = %c\n",operation);
//printf("num1 = %d,num2 = %d\n",num1,num2);
if(fprintf(fpout,"%d\n %d\n %c\np\n",num1,num2,
*operation)==eof)
oops("error writing",1);
fflush(fpout);
if(fgets(message,bufsiz,fpin)==null)
break;
printf("%d %c %d = %s",num1,*operation,num2,message);
} fclose(fpout);
fclose(fpin);
}
// 子程序的處理函式
int dc_deal(int todc[2],int fromdc[2])
Linux數學計算器 bc命令
bc命令是一種支援任意精度的互動執行的計算器語言。bash內建了對整數四則運算的支援,但是並不支援浮點運算,而bc命令可以很方便的進行浮點運算,當然整數運算也不再話下。root redhat test yum install bc root elasticsearch 03 bc 選項 引數 i 強...
Linux簡單好用計算器 bc命令(命令計算器)
bc 命令是任意精度計算器語言,通常在linux下當計算器用。它類似基本的計算器,使用這個計算器可以做基本的數 算。注意 輸入 quit 退出該命令。語法 bc 選項 引數 選項值引數檔案 指定包含計算任務的檔案。常用的運算 注意 混合計算時計算符合不同級時預設給你帶括號計算 或 需要格外注意 例如...
shell指令碼計算器
shell指令碼編寫計算器 直接上 bin bash falg 1 while falg eq 1 doecho shell迷你計算器 echo 請選擇對應的運算數字 echo 1 表示加法 echo 2 表示減法 echo 3 表示乘法 echo 4 表示除法 echo 5 退出計算器!read ...