- 实验任务要求
本次实验的内容由下面几部分组成:
- 分析且运行myshell
- 扩充myshell功能,使其支持以下内部命令
- Cd 目录—更改当前的工作目录到另一个目录,如果目录未指定,输出当前目录,如果目录不存在,应当有错误信息提示
- Echo 内容—显示echo后的内容并换行
- Help —简短概要地输出myshell的使用方法和基本功能
- Jobs —输出myshell当前的一系列子进程,必须提供子进程的命名和PID号
- 添加重定向和管道功能
二、实验原理和方法设计
使用教材给出的myshell框架进行编程
使用专业语法分析工具flex实现语法分析
三、实验工具和环境配置说明
操作系统ubuntu
使用函数chdir实现改变当前目录
使用dup实现重定向
使用pipe实现管道功能
使用fork创建子进程
使用execvp执行外部命令
四、实验步骤
- 实现cd功能
- 功能展示
目录结构如下所示
目录未指定
目录不存在
更改目录
- 程序实现
匹配字符串,如果第一个字符串为cd,执行相应函数
函数实现如下所示
参数数量为1,说明没有指定目录
参数数量大于2,报错
参数数量为1时,执行chdir函数并以第2个参数作为函数输入,执行成功,成功反馈,若失败,目录不存在
- Echo命令
已知echo命令为ubuntu的外部命令,程序存放在/bin目录下