BUAA-OS-Challenge-2024
前言 本文是对BUAA操作系统课程挑战性任务中shell增强的总结,其目的是实现一个功能更强大的shell(与linux更加接近)。 宇宙安全声明: 本文行文过程为笔者实现Shell增强的流程,与指导书顺序不同。 本文借鉴参考了往年功能要求相似的部分,但由于2024年OS课程对shell增强进行评测,故修改了往年的部分bug 本文是在通过测评的基础上,一定会存在未评测的bug。 实现对.b的忽略 目标: 你需要实现不带 .b 后缀的指令,但仍需兼容带有 .b 后缀的指令,如 ls 与 ls.b 都应能够正确列出当前目录下的文件。 思路: 对于ls等指令,我们在lab6中实现了带有.b格式的指令,其判别方式为作为一个token传入spawn函数进行解析。因此,为实现对.b的忽略,需要修改spawn函数。 实现方法: spawn代码片段如下(往年这部分实现已经很多): int fd; if ((fd = open(prog, O_RDONLY)) < 0) { // 检测是否以.b结尾,如果是,则直接打开 int len =...