shell命令實現 bc計算器

2021-06-02 08:19:05 字數 1778 閱讀 1564

我們將程式分為兩個部分

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 ...