|
@@ -0,0 +1,49 @@
|
|
|
+# 用rust写个能再DragonOS上跑的简易命令行程序
|
|
|
+
|
|
|
+**导师:** [val213](https://github.com/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 文档](https://docs.dragonos.org.cn/userland/appdev/rust-quick-start.html)
|
|
|
+
|
|
|
+然后使用 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`)实现这一部分的逻辑。
|