作为程序员,在Linux环境下,我们更多使用的命令交互工具是Shell:
在Windows环境中,它是cmd:
接下来,让我们编写一个简单的shell程序。
如果只实现命令交互,这个shell程序其实是相当容易实现的,算法可以用文字描述如下:
Void Shell程序()
{
读取用户的输入;
如果(用户输入命令1)
{
调用命令1的处理程序;
}
否则如果(用户输入命令2)
{
调用命令2的处理程序;
}
.
否则如果(用户输入命令n)
{
调用命令n的处理程序;
}
}
但是,上面的算法有一个缺点:当我们添加新的命令时,上面的代码也会增加。
为了解决这个缺点,我们可以定义一个映射结构:
结构TCommandMap
{
Char*命令名;
func命令的处理函数;
};
然后构建一组映射结构:
struct tcommanmapcommandmaps[]=
[
{“命令1”,函数1},
{“命令2”,函数2},
.
{“命令n”,函数n}
]
这样,当我们添加命令时,我们只需要在映射数组中添加一条记录。
这是包含在简单Shell程序中的头文件:
这是简单Shell程序的命令处理功能:
这是简单Shell程序的数据结构定义:
这是简单Shell程序的main()函数实现:
这是简单Shell程序的编译命令:
简单的Shell程序是这样工作的:
是不是有点像shell或者cmd?
但是说实话,这个程序的简单版本在哪里,简直就是一个拙劣的版本。
感谢浏览!
#科技新星创造营#