作為程序員,在Linux環境下,我們用得比較多的命令交互工具是Shell:
在Windows環境下,則是cmd:
下面,我們編寫一個簡易的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程序的包含的頭文件:
這是簡易Shell程序的命令處理函數:
這是簡易Shell程序的數據結構定義:
這是簡易Shell程序的main()函數實現:
這是簡易Shell程序的編譯命令:
這是簡易Shell程序的運行情況:
是不是有點像shell或者cmd?
不過說實在話,這個程序哪裡是簡易版,簡直是寒磣版。
謝謝您的瀏覽!
#科技新星創作營#