feat-cmd_program.md 2.5 KB

用rust写个能再DragonOS上跑的简易命令行程序

导师: val213, Sig-Main, [email protected]

bbs链接: https://bbs.dragonos.org.cn/t/topic/371

v0.1.0,后续需要的话可能会有补充

这是一个相对灵活的任务,你可以尽情探索每个命令的高级用法和各种参数的灵活配置,依照工具的官方文档(例如Gnu xxx Manul),尽可能的实现该工具的各种参数。

前置知识

  • 如何配置和启动DragonOS
  • Rust 基本语法
  • 对于常见系统调用的基本了解
  • RTFM & STFW

具体要求

首先你需要参照官方文档:如何为 DragonOS 创建一个Rust 应用:

Rust应用开发快速入门 — DragonOS dev 文档

然后使用 rust 编写一个 用户空间程序,并为其编写测试样例脚本或者程序,展示其效果。

开发目标以及建议

DragonOS 现有的命令可以进系统后在 /usr/local/bin 中 查看,不过由于这部分命令没有进行完备的测试,有可能存在错误或者未实现的命令。如果你有兴趣也可以进行测试并找到存在bug(与预期不符合的命令)的命令并试着找出问题所在和可能的解决方法。

以下是我们暂时还没有实现但是 Linux 中又很常用的命令,可供你参考。如果你有别的自己想开发的命令行工具也可以。比如一个相对更加复杂的DNS解析命令行工具。

注意,在开始之前,你需要先调研并确定你所需要的系统调用,在当前主线最新版本的 DragonOS 中是被支持的。

  • grep
    • 从文件或标准输入中搜索并匹配特定的文本模式。
  • find
    • 在目录中查找符合特定条件的文件或目录。
  • file
    • 用于识别文件类型。
  • ps
    • 显示当前运行的进程及其相关信息,如进程ID、状态、CPU/内存占用等。

考察点

  1. 能够通过编译器的检查,并通过 DADK 部署到 DragonOS 上
  2. 在 DragonOS 上能够跑起来,但是部分功能不符合预期/跟Linux不一致
  3. 在 DragonOS 上能够跑起来,且功能符合预期,与Linux一致

注:你有可能会遇到部分功能可以通过调用外部 crate 实现的情况,例如grep 本身的模式匹配(如正则表达式匹配)通常是通过编写程序逻辑来实现,而非依赖内核的直接支持。Rust 可以使用 crates(例如 regex)实现这一部分的逻辑。