Shell 命令解释系统

举报
内核笔记 发表于 2021/06/08 22:49:59 2021/06/08
【摘要】 Shell 命令解释系统 在 Unix 世界中有众多的 Shell 命令解释程序,它们各有自己的特色和特长。自己 编写一个 Shell 命令解释程序不但可以定制特定的界面功能也可以深入了解和挖掘内核的 各种技术。 问题实现一个能处理前后台运行命令的 shell实现一个带有管道功能的 shell实现一个能处理 I/O 重定向的 shell实现一个能在一行上...

Shell 命令解释系统

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

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

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

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

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

文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:xuesong.blog.csdn.net/article/details/81712921

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。