在学习了Linux的进程控制之后,学习了fork函数和exec函数族,通过这些个函数可以简单的实现一份shell,就是实现一份命令行解释器,当然是简单版的,实现功能如下
- 能执行普通的命令如ls ,ps ,top等
- 可以实现目录的跳转cd命令
- 能执行命令并加上参数如ls-l
- 能执行打开man手册
- 能识别管道符
还不能实现正则表达式,要实现这个我当前的代码根本不能用,要重头开始改写。。。
下面贴代码
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <string.h>
4 #include <sys/types.h>
5 #include <sys/wait.h>
6 #include <stdlib.h>
7 #include <pwd.h>
8 #include <sys/utsname.h>
9 #include <libgen.h>
10
11
12 void eatblank(char **buf)
13 {
14 while(**buf==' ')
15 {
16 (*buf)++;
17 }
18 }
19
20
21 void GetHostName(char *hostname,int length)
22 {
23 gethostname(hostname,length);
24 char *p=hostname;
25 while(*p!='