Rust 获取 CPU、内存、硬盘、网卡信息

举报
福州司马懿 发表于 2025/03/24 09:50:42 2025/03/24
116 0 0
【摘要】 在 Rust 中获取 CPU、内存、硬盘和网卡信息,通常需要使用一些外部库,因为标准库并不直接提供这些系统信息的接口。一个常用的库是 sysinfo,它可以帮助你轻松获取这些硬件信息。下面是一个简单的示例,展示如何使用 sysinfo 库来获取这些信息。首先,你需要在 Cargo.toml 文件中添加 sysinfo 作为依赖:[dependencies]sysinfo = "0.21"接下...

在 Rust 中获取 CPU、内存、硬盘和网卡信息,通常需要使用一些外部库,因为标准库并不直接提供这些系统信息的接口。一个常用的库是 sysinfo,它可以帮助你轻松获取这些硬件信息。下面是一个简单的示例,展示如何使用 sysinfo 库来获取这些信息。

首先,你需要在 Cargo.toml 文件中添加 sysinfo 作为依赖:

[dependencies]
sysinfo = "0.21"

接下来,你可以编写如下的 Rust 代码来获取并打印系统信息:

use sysinfo::{System, SystemExt};

fn main() {
    // 创建一个 System 对象
    let sys = System::new_all();

    // 获取并打印 CPU 信息
    println!("CPU:");
    for cpu in sys.cpus() {
        println!("  CPU {}: {:?}", cpu.id(), cpu);
    }

    // 获取并打印内存信息
    println!("\nMemory:");
    println!("  Total: {} MB", sys.total_memory() / (1024 * 1024));
    println!("  Free: {} MB", sys.free_memory() / (1024 * 1024));
    println!("  Available: {} MB", sys.available_memory() / (1024 * 1024));

    // 获取并打印硬盘信息
    println!("\nDisks:");
    for disk in sys.disks() {
        println!("  Disk {}: {:?}", disk.name(), disk);
    }

    // 获取并打印网卡信息
    println!("\nNetwork Interfaces:");
    for interface in sys.networks() {
        println!("  Interface {}: {:?}", interface.name(), interface);
    }
}

解释

  1. 创建 System 对象System::new_all() 创建一个包含所有系统信息的 System 对象。

  2. CPU 信息:通过 sys.cpus() 迭代获取每个 CPU 的信息。

  3. 内存信息sys.total_memory()sys.free_memory()sys.available_memory() 分别返回总内存、空闲内存和可用内存。

  4. 硬盘信息:通过 sys.disks() 迭代获取每个磁盘的信息。

  5. 网卡信息:通过 sys.networks() 迭代获取每个网络接口的信息。

运行

确保已安装 Rust 和 Cargo,然后在终端中运行:

cargo run

这段代码会输出系统的 CPU、内存、硬盘和网卡的基本信息。根据具体需求,你可以进一步处理和格式化这些信息。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。