Linux编程:实现Shell环境(一)

参考书本:《Linux C 编程实战》

首先说明,这些代码,是我在学习之后共享出来的,并没有完全的自创,但是对于学习 Linux 编程非常又帮助。这篇文章的实例是为了加强对进程控制的编程强化,学过进程控制,却无法自己控制进程的,读懂这篇文章,你就会对进程控制的全部过程有所了解,但是,你必须学好进程控制的基础知识。

一、环境介绍

打开Linux终端,会看到这样的一个提示符:

name@name-desktop:~$

 

这个提示符,其实就是Shell环境提示符,name代表你的用户名,name-desktop代表计算机名。~$代表当前Shell环境的根目录在用户的主目录。

这篇文章编程所写的,就是要建立这样一个Shell环境,用于解释用户输入的命令,并运行程序。由于只是简单的Shell环境,我们就让这个环境,能够解释我们并运行ls命令。

二、功能介绍

  • 支持 ls 命令
  • 带1到多个参数的命令
  • 带一个输出重定向的命令
  • 带一个输入重定向的命令
  • 带一个管道的命令
  • 后台运行符&可加在以上各个命令的最后面。
  • 输入exit和logout推出shell环境。

三、错误处理

  • 输入错误的命令格式报错
  • 输入不存在的命令报错

四、程序主函数流程图

2010082401.jpg

五、关键函数的功能及说明

void print_prompt()

 

该函数只是简单的打印Shell环境提示符,如:MyShell$

void get_input(char* buf)

 

该函数用来获得一条用户输入的待执行命令,参数buf用于存放输入的命令,我们还可以设定命令长度,如大于256个字符,则终止程序。

void explai_input(char *buf,int *argcount,char arglist[100][256])

 

该函数用来解析buf中存放的命令,把每个选项存放在arglist中。

do_cmd(int argcount,char arglist[100][256])

 

该函数用来执行arglist中存放的命令,argcount为待执行命令参数个数

int find_conmand(char *command)

 

该函数的功能是分别在当前目录下、/bin、/usr/bin目录下查找命令的可执行程序。

六、程序代码

由于程序过长,我将程序代码写到另一篇日志里面去,如果可以两个窗口一起看,对比程序函数,会比较好。

Linux编程:实现Shell环境(二)

{ 发表评论? }

  1. 三叶草

    shell编程貌似就像Windows里面的bat文件一样的吧

  2. 我心飞翔

    shell编程原来就是运行

  3. 汽车导航仪哪个好

    我们学的不是linux,是JAVA,但很多都不经相同

  4. redswallow

    mark一个 最近要写shell

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>