全部章节21
本页目录

指南 · 第 6 章

进程与系统

运行命令、消费输出并检查系统状态。

run 与 shell 的安全边界

example.hhy
run(["git", "log", "--oneline"], { timeout: 5s })
    |> stdout_lines
    |> take(10)
    |> print

run(argv, options?) 直接把 List<String> 交给操作系统,不经过 Shell,因此空格、通配符、$、重定向和管道不会被二次解释。只有确实需要 Shell 语法时才使用 shell(command, options?);Checker 会对 shell 给出安全提示。

选项用途
cwd子进程工作目录 Path
env只覆盖子进程环境
stdin传给命令的标准输入文本
timeout命令最长运行时间
max_outputstdout 与 stderr 捕获上限

CommandResult

run 与 shell 默认等待结束并返回 CommandResult,而不是把非零退出码自动当作 HHY Error。脚本应读取 exit_code 决定业务成功。

字段内容
exit_code子进程退出码
stdout标准输出 String
stderr标准错误 String
duration命令运行 Duration

非零 exit_code 不会自动变成 HHY Error。脚本需要根据命令约定判断成功。stdout_lines(result) 可把已捕获输出作为行 Stream 继续处理。

进程快照与字段

processes() 返回当前时刻的 Stream<Process> 快照。Process 不是 Map,提供 pid、name、cpu、memory、status、command 只读字段;转 JSON 前必须显式映射成普通 Map。

args、env、system 与 stdin

值内容
args不含脚本路径的 List<String>
env只读环境变量视图
systemOS、架构、主机、CPU、内存和目录信息
stdin_lines()标准输入行 Stream
example.hhy
if length(args) != 1 {
    print_error("usage: script.hhy <input>")
    exit(3)
}

let input = path(args[0])

查阅完整 API

进程与系统 API Reference →查阅 run、shell、processes、stdin_lines 和 every 的完整签名。