MIT6.828_HW2_SHELL

这篇博客详细介绍了MIT6.828课程作业中关于shell的实现,包括预备知识如XV6讲义和文件描述符,以及如何实现简单的命令、I/O重定向和管道通信。在I/O重定向部分,讲解了如何通过关闭和打开文件描述符来实现。对于管道,阐述了其工作原理,并指出在使用管道时,父进程应在wait之前关闭管道的写端以避免阻塞问题。
摘要由CSDN通过智能技术生成

Homework: shell

1.预备知识:

1.XV6讲义P7-P14
2.源码中部分常用函数的了解:
在这里插入图片描述
3.文件描述符:
在xv6内核中,每个进程都有一张文件描述符表,表项描述了文件的各种信息,一个表项对应一个文件,文件描述符即是文件在表中对应表项的下标,进程通过文件描述符对文件进行读写等各种操作,按照约定,进程一般通过标准输入文件(fd=0)读取数据,对标准输出文件(fd=1)进行写操作,将错误信息输出到标准错误文件(fd=2)上,并且这三个文件描述符默认都是打开状态,通过利用这些约定,使用close,dup,open等函数,重新分配0,1等文件描述符,能够达到实现I/O重定向,管道通信的目的。

2.实现简单的命令(如ls)

parsecmd已经实现了命令解析,我们只要在runcmd中实现case’'的部分即可,调用execv()函数,该函数可能因给定的绝对路径不正确而找不到对应程序,此时修改路径名即可。**
在这里插入图片描述

3.实现I/O重定向

对于文件描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值