Lab:Simple xv6 shell

1.实验目的

了解Unix shell如何使用基本的系统调用。

2.实验内容

为xv6编写一个简单的shell,能够运行带参数的命令,处理输入和输出重定向,并设置两个元素管道。

3.实验步骤(要细化如何实现的思路或流程图)

1)首先先创建一个user/nsh.c文件。

6.s081 Lab:Simple xv6 shell

2)按照要求修改Makefile文件。

6.s081 Lab:Simple xv6 shell

3)main函数参考sh.c文件来编写,不过没有必要实现那么复杂的功能,只需要实现管道和重定向功能就可以,那我们也就只需要简化一下sh.c中的代码即可拿来直接用。。

6.s081 Lab:Simple xv6 shell

4)首先我们先要解决输入进去的空格问题,也就是说去掉输入格式中的空格,,因此写下函数setargs来设置参数格式。

6.s081 Lab:Simple xv6 shell

5)实现runcmd,对命令进行读取,识别出来是什么命令。
6.s081 Lab:Simple xv6 shell
6.s081 Lab:Simple xv6 shell

6)完成对管道命令的进一步实现,管道命令就相当于有两个进程在执行命令,然后相互利用一个管道通信,修改标准输入输出即可。

6.s081 Lab:Simple xv6 shell

7)完成实验,进行测试,通过,试验成功。

6.s081 Lab:Simple xv6 shell

4.实验结论与心得体会

对Unix类型系统的命令行有了进一步了解,同时了解了管道和重定向底层的一些简单原理,在实践过程中,提升了自己的代码能力,受益匪浅。

相关文章: