Appearance
5. 练习:实现简单的Shell
用讲过的各种C函数实现一个简单的交互式Shell,要求:
给出提示符,让用户输入一行命令,识别程序名和参数并调用适当的
exec
函数执行程序,待执行完成后再次给出提示符。识别和处理以下符号:
- 简单的标准输入输出重定向(<和>):仿照例 30.5 "wrapper",先
dup2
然后exec
。 - 管道(|):Shell进程先调用
pipe
创建一对管道描述符,然后fork
出两个子进程,一个子进程关闭读端,调用dup2
把写端赋给标准输出,另一个子进程关闭写端,调用dup2
把读端赋给标准输入,两个子进程分别调用exec
执行程序,而Shell进程把管道的两端都关闭,调用wait
等待两个子进程终止。
- 简单的标准输入输出重定向(<和>):仿照例 30.5 "wrapper",先
你的程序应该可以处理以下命令:
ls -l -R > file1
cat < file1 | wc -c > file1
其中:
- ○表示零个或多个空格
- △表示一个或多个空格