Shell 命令解释系统

Shell 命令解释系统

在 Unix 世界中有众多的 Shell 命令解释程序,它们各有自己的特色和特长。自己 编写一个 Shell
命令解释程序不但可以定制特定的界面功能也可以深入了解和挖掘内核的 各种技术。

问题
实现一个能处理前后台运行命令的 shell
实现一个带有管道功能的 shell
实现一个能处理 I/O 重定向的 shell
实现一个能在一行上处理多条命令的 shell

Shell 命令解释程序中元字符的处理是 shell 中一个强大的功能,利用对各种元字符的
不同解释可以充分挖掘出内核的各种强大的潜能。例如实验教材中提到的利用 “&” 符号
启动并发的后台进程,利用 “<”、”>” 符号启动 I/O 重定向,利用 “|” 启动管道读写等
等。我们也可以实验实现一些其他的元字符功能,如 “*” 通配符,”;” 连接符等等。

关于管道,可有两种实现形式,即无名管道和有名管道。无名管道使用内存缓冲实现管
道机制;有名管道使用管道文件实现管道机制,注意在程序执行之前先用 shell 命令建立
两个命名管道

设计说明
读取环境变量,分割环境变量的各个路径。用户输入命令后,
对命令进行解析,根据不同的命令类型进行相应的处理。若命令中有‘ &’符号则表示后台运行,‘ <’符号表示输入重定向,
‘ >’符号表示输出重定向,‘ |’符号表示管道,‘;’符号用
来多条命令之间隔开。
对于输入输出重定向,截取重定向的文件;对于管道,分
别管道左边和右边的命令;对于‘;’多命令符号,切割各条命
令。解析各条命令,获取命令名和参数。取得命令所在的绝对路径,创建子进程用来执行命令。如果为管道,则在子进程写入管道,在父进程从管道读取。如果有后台执行符号‘ &’则父进程不用等待子进程执行完,否则等待子进程执行完。

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/81712921