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?


不过说实在话,这个程序哪里是简易版,简直是寒碜版。


谢谢您的浏览!


#科技新星创作营#


分享到:


相關文章: