操作系统实践报告 多进程题目 sh1.c: 实 现 shell 程 序 , 要 求 具 备 如 下 功 能 • 支 持 命 令 参 数 • $ echo arg1 arg2 arg3 • $ ls /bin /usr/bin /home • 实 现 内 置 命 令 cd、 pwd、 exit • $ cd /bin • $ pwd • /bin 思 路 : 说 明 : 首 先 设 置 一 个 死 循 环 模 仿 shell 终 端 , 读 取 用 户 的 输 入 , 并 且 根 据 空 格 将 输 入 拆 分 成 字 符 串 数组 , 然 后 调 用 excute 这 个 子 函 数 进 行 处 理 。 1. echo 根 据 数 组 第 一 个 元 素 来 判 断 命 令 是 什 么 , 判 断 出 是 ehco 后 , fork 一 个 新 的 进 程 , 将 其 后 的 内 容一 个 个 输 出 出 来 , 并 且 父 进 程 等 待 子 进 程 退 出 后 再 执 行 , 确 保 输 出 在 屏 幕 上 时 不 被 打 断 。 2. ls 读 取 用 户 输 入 并 且 根 据 拆 分 的 数 组 判 断 出 是 ls 命 令 后 , fork 一 个 新 的 进 程 , 调 用 execlp 函 数 将/bin/ls 下 的 ls 程 序 装 入 子 进 程 并 将 拆 分 的 数 组 参 数 部 分 传 递 给ls 即 可 , 同 样 的 , 父 进 程 等 待 子进 程 退 出 , 确 保 输 出 在 屏 幕 上 不 被 打 断 。 3. cd 同 样 是 根 据 输 入 并 拆 分 成 数 组 后 判 断 出 是 cd 命 令 后 , fork 一 个 新 的 进 程 , 然 后 调 用 chdir 并 将拆 分 数 组 的 参 数 部 分 传 递 给 chdir 作 为 实 参 即 可 。 4. pwd 同 样 是 根 据 输 入 并 拆 分 成 数 组 后 判 断 出 是 pwd 命 令 后 , fork 一 个 新 的 进 程 , 然 后 调 用system("pwd")即 可 , 此 命 令 也 可 以 用 来 验 证 上 面 的 cd 命 令 是 否 正 确 执 行 。 5. exit 根 据 用 户 输 入 逼 格 拆 分 的 数 组 判 断 出 是 exit 命 令 后 , excute 子 函 数 返 回 -1, 在 循 环 中 检 测excute 的 返 回 值 , 如 果 是 -1 则 直 接 return, 退 出 模 仿 ...