扩展库 / sysinfo
sysinfo
读取 Windows 和 Linux 主机的系统标识、CPU、内存与运行时间。
版本 1.0.0 · C / xlang · 无扩展库依赖
快速开始
import sysinfo
println(sysinfo.osName(), sysinfo.arch())
println(sysinfo.cpuCount())
println(sysinfo.memAvailable())
内存值是瞬时快照,连续调用可能不同;探测失败或 CPU 型号字段只有空白时,文本返回 unknown、数值返回 0。
本模块报告主机信息,不把进程亲和性或容器配额当作整机资源;0可能是真实值,也可能表示探测不可用。Linux解析以完整系统记录为单位,超长行的续块不能冒充新字段,截断目标行也不能隐藏尾部垃圾。
接口
| 入口 | 用途 |
|---|---|
osName / osVersion / arch / hostname | 系统、版本、架构及主机名的 UTF-8 文本。 |
cpuName / cpuCount | 处理器名称及全系统在线逻辑处理器数量;Windows 覆盖所有处理器组。 |
memTotal / memAvailable / memUsagePct | 物理内存总量、可用字节数及整数使用率百分比;Linux 可用量按 /proc/meminfo 的 MemAvailable 计算,不等同空闲页。探测失败返回 0,不伪报满载。 |
pageSize / uptime | 内存页字节数与系统运行秒数。 |
五个文本查询返回普通 string;原生 XRT 文本由运行时直接接管,不需再次复制。
Windows 版本来自系统 API,主机名和 CPU 名经 Unicode API 转 UTF-8;Linux 的系统标识来自 uname,CPU 名和运行时间读取 /proc。Linux 内核的 CPU 信息字段因架构而异;没有 model name 时返回 unknown,不会以架构名冒充型号。系统返回空文本或非 UTF-8 文本也降级为 unknown。支持范围为 Windows/Linux,不承诺其他平台。
C 对照
#include "xrt.h"
#include "sysinfo_native.h"
int main(void)
{
char* name = xsysinfo_os_name();
int ok = name && name[0] != 0;
xrtFree(name);
return ok ? 0 : 1;
}
C 字符串结果由调用方用 xrtFree 释放;XLang 包装自动接管。每次公开调用清除之前的 XRT 错误;转换时若内存分配失败,则保留内存错误并返回空结果,不伪装为 unknown。release/extlibs/sysinfo/examples/ 内的 basic 与 metrics 各有 C/XLang 对照:前者展示可稳定比较的主机信息,后者展示会随采样时刻变化的内存和运行时间。
上面的片段需与 sysinfo_native.c 一同构建。包内 examples/sysinfo_c.c 和 examples/metrics_c.c 是自包含完整范例,可直接交给 xl run;不需要另找原生DLL。
验证状态
xl run release/extlibs/sysinfo/examples/sysinfo_c.c
xl run release/extlibs/sysinfo/examples/basic.xl
powershell -NoProfile -ExecutionPolicy Bypass -File release/extlibs/sysinfo/test/check.ps1
bash release/extlibs/sysinfo/test/check.sh
2026-10-29:Windows默认38阶段与Linux完整门禁通过,包括11个实际生成原型、五条拥有型文本直接接管、两平台各8条独立程序及双语同机对照。Linux记录测试由旧18场景11项失败扩为23场景零失败,覆盖分块伪字段、尾部垃圾、EOF/换行、整数溢出/饱和与旧错误清除;ASan/UBSan通过。测试库按清单依赖裁剪,冻结XRT与编译器未动。只签收Windows x64和Linux x86_64/WSL的约定能力,不冒称ARM/真实多处理器组或整个xlang发布完成。
2026-10-24 发布版:Windows 默认门禁的严格 C、XLang 边界与双语范例,以及带输出的公开范例 AOT 均通过。旧的 xl6ValueDataSnapshotV1 缺符号问题只属于历史发布物;当时 Linux 已通过 C ASan/UBSan 与 XLang JIT 对照,AOT 尚未验收。
2026-10-26 新发布物复核:Windows/Linux 默认门禁均通过严格 C、XLang 边界、分配故障与四份语言独立 EXE;新增两个 C 单文件范例的 xl build 独立 EXE。基础信息与 GCC/XLang 同机输出一致,瞬时动态指标按格式和合法范围验收。Linux 含 ASan/UBSan 与异常系统文本夹具;普通字符串由 XLang 直接接管 XRT 分配,不复制正文。旧版带输出 AOT 缺符号不再复现。
2026-10-27:五个文本入口改用 char* 与 @owned string,生成 C 直接保存 XRT 拥有的指针,不再经过 point/takeCstr 转发;无额外正文复制,仍有一次长度扫描。Windows 默认门禁与 Linux C ASan/UBSan、XLang JIT/AOT、双语同机输出门禁均通过。
2026-10-19 复跑:C 范例可直接使用 xl run release/extlibs/sysinfo/examples/sysinfo_c.c 运行;Windows/Linux 包门禁将其与 GCC 编译运行、XLang 范例的同机输出对照。Windows 包级脚本每次使用独占构建目录,退出后只清理本次产物,不与并行门禁共用对象。六个整数 C 结果统一为 int64_t,与 XLang int 的 LP64 ABI 一致。Linux 内存可用量以前后两次系统快照对照;链接器夹具还验证不可读、负数、尾部垃圾及整数溢出时的降级,以及非 UTF-8 系统文本降级。Windows 伪注册表夹具验证首次分配失败及恢复。本机未覆盖多处理器组硬件。