作为程序员,在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?
不过说实在话,这个程序哪里是简易版,简直是寒碜版。
谢谢您的浏览!
#科技新星创作营#