C語言程序設計——自己編寫一個簡易shell程序

C語言程序設計——自己編寫一個簡易shell程序

作為程序員,在Linux環境下,我們用得比較多的命令交互工具是Shell:


C語言程序設計——自己編寫一個簡易shell程序

在Windows環境下,則是cmd:


C語言程序設計——自己編寫一個簡易shell程序

下面,我們編寫一個簡易的shell程序吧。

如果只實現命令交互,這個shell程序其實挺好實現的,算法可以用文字描述為:


<code> 

void

Shell

程序() {     讀取用戶的輸入;    

if

(用戶輸入的是命令

1

)     {           調用命令

1

的處理程序;     }    

else

if

(用戶輸入的是命令

2

)     {           調用命令

2

的處理程序;     }    ...    

else

if

(用戶輸入的是命令n)     {           調用命令

n

的處理程序;     } } /<code>


但是採用上面的算法,有個缺點:當我們新增命令時,上面的代碼也會隨之增加。


為了解決這個缺點,我們可以定義一個映射結構:

<code>

struct

TCommandMap

{

   

char

*    命令名稱;     Func    命令的處理函數; };/<code>


然後建立一個映射結構的數組:

<code>

struct

TCommandMap

CommandMaps

[] = [     {

"命令1"

, 函數

1

},     {

"命令2"

, 函數

2

},     ...     {

"命令n"

, 函數n} ] /<code>


這樣,當我們新增命令時,只在映射數組中增加一條記錄就可以了。


這是簡易Shell程序的包含的頭文件:


C語言程序設計——自己編寫一個簡易shell程序


這是簡易Shell程序的命令處理函數:


C語言程序設計——自己編寫一個簡易shell程序

這是簡易Shell程序的數據結構定義:


C語言程序設計——自己編寫一個簡易shell程序


這是簡易Shell程序的main()函數實現:


C語言程序設計——自己編寫一個簡易shell程序


這是簡易Shell程序的編譯命令:


C語言程序設計——自己編寫一個簡易shell程序


這是簡易Shell程序的運行情況:


C語言程序設計——自己編寫一個簡易shell程序


是不是有點像shell或者cmd?


不過說實在話,這個程序哪裡是簡易版,簡直是寒磣版。


謝謝您的瀏覽!


#科技新星創作營#


分享到:


相關文章: