参考书本:《Linux C 编程实战》
首先说明,这些代码,是我在学习之后共享出来的,并没有完全的自创,但是对于学习 Linux 编程非常又帮助。这篇文章的实例是为了加强对进程控制的编程强化,学过进程控制,却无法自己控制进程的,读懂这篇文章,你就会对进程控制的全部过程有所了解,但是,你必须学好进程控制的基础知识。
一、环境介绍
打开Linux终端,会看到这样的一个提示符:
name@name-desktop:~$
这个提示符,其实就是Shell环境提示符,name代表你的用户名,name-desktop代表计算机名。~$代表当前Shell环境的根目录在用户的主目录。
这篇文章编程所写的,就是要建立这样一个Shell环境,用于解释用户输入的命令,并运行程序。由于只是简单的Shell环境,我们就让这个环境,能够解释我们并运行ls命令。
二、功能介绍
- 支持 ls 命令
- 带1到多个参数的命令
- 带一个输出重定向的命令
- 带一个输入重定向的命令
- 带一个管道的命令
- 后台运行符&可加在以上各个命令的最后面。
- 输入exit和logout推出shell环境。
三、错误处理
- 输入错误的命令格式报错
- 输入不存在的命令报错
四、程序主函数流程图
五、关键函数的功能及说明
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目录下查找命令的可执行程序。
六、程序代码
由于程序过长,我将程序代码写到另一篇日志里面去,如果可以两个窗口一起看,对比程序函数,会比较好。

shell编程貌似就像Windows里面的bat文件一样的吧
相当于windows运行cmd之后的那个环境。
shell编程原来就是运行
差不多可以这么理解。其实都是程序。命令终端也是一个程序。
我们学的不是linux,是JAVA,但很多都不经相同
代码的思路都是一样的,其实就是语法不一样而已
mark一个 最近要写shell
忘得差不多了。