28 次发布

0.14.8 2024年4月24日
0.14.6 2024年3月13日
0.14.2 2023年9月18日
0.14.0 2023年7月6日
0.1.0 2016年8月22日

#18 in Unix APIs

Download history 10191/week @ 2024-05-03 9182/week @ 2024-05-10 9943/week @ 2024-05-17 9428/week @ 2024-05-24 11252/week @ 2024-05-31 11238/week @ 2024-06-07 9828/week @ 2024-06-14 11340/week @ 2024-06-21 9951/week @ 2024-06-28 10077/week @ 2024-07-05 11179/week @ 2024-07-12 10288/week @ 2024-07-19 12741/week @ 2024-07-26 11155/week @ 2024-08-02 12780/week @ 2024-08-09 11980/week @ 2024-08-16

51,307 monthly downloads
用于 109 crates (17 直接)

MIT 许可证

110KB
2K SLoC

Build Status codecov

libproc-rs

这是一个用于获取 Mac OS X 和 Linux 上运行进程信息的库。

将其添加到项目的 Cargo.toml

libproc = "0.14.4"

然后在代码中使用它

use libproc::libproc::proc_pid;

match proc_pid::pidpath(pid) {
    Ok(path) => println!("PID {}: has path {}", pid, path),
    Err(err) => writeln!(&mut std::io::stderr(), "Error: {}", err).unwrap()
}

您可以在 crates.io 上找到最新的发布版本

您可以在 docs.rs 上找到最新版本的浏览文档。

注意: master 分支(代码和文档)可能与新版本之前的文档不同。

最小 rust 版本

当前所需的最小 rust 版本是:1.74.1,并在 CI 中进行了测试,必须通过。

测试矩阵

Github Actions CI 矩阵是

rust 版本

  • stable(必须通过)
  • beta(必须通过)
  • 1.74.1(目前支持的最低 rust 版本)(必须通过)
  • nightly(允许失败)

在以下平台上

  • ubuntu-latest
  • macos-11(Big Sur)
  • macos-12(Monterey)
  • macos-13(Ventura)
  • macos-14(Sonoma)

Mac OS X 版本

libproc 在 10.9(Mavericks)中添加了调用,它们位于名为 "macosx_10_9" 的 rust "功能" 开关下。默认构建包括 "macosx_10_9" 功能。

要为 Mac OS 10.9 之前的版本构建,请通过传递 --no-default-features 给 cargo 来禁用默认功能。

示例

包含两个简单示例,以展示 libproc-rs 的工作原理。

  • procinfo 接受 PID 作为可选参数(如果没有提供,则使用自己的 pid)并返回关于进程的信息
  • dmesg 是使用 libproc-rs 实现的 dmesg 的一个版本。

可以这样运行: sudo cargo run --example procinfosudo cargo run --example dmesg

贡献

欢迎您分支此存储库并提交 pull request,或提交 issue。

在开源软件资金方面进行实验

我正在通过 RadWorks FoundationDrips 项目 探索开源软件资金的思路。

此项目在 Drips 这里

所需输入

  • 欢迎提出关于 API、模块重组和跨平台抽象的建议。
  • 如何进行错误报告?定义自己的新错误类型,还是保持简单使用字符串?
  • 当有道理的时候,希望返回 Path/PathBuf 而不是 String 吗?

TODO

请参阅 问题列表。我在需要帮助的地方添加了 "help wanted" 标签。

  • 查看在 Linux 上可以作为起点实现类似方法的列表
  • 在 Mac OS X 上完成 API - 解决所有 Mac OS X / Darwin 版本的问题....
  • 添加更多文档(包括带有文档测试的示例)
  • 添加自己的自定义错误类型并实现 From::from 以简化客户端中多个错误类型的报告

本地构建和测试

如果您今天感觉运气不错,可以从 make 开始。

cargo test 将按常规构建和测试。

然而,由于某些函数需要以 root 权限运行,CI 测试也是以 root 运行的。因此,在本地开发时,最好使用 sudo cargo test

[!NOTE] 这可能会在您在 cargo testsudo cargo test 之间切换时遇到权限问题。要修复此问题,请运行 sudo cargo clean 然后按照您喜欢的构建或测试。

为了确保在作为 root 或不作为 root 运行时测试都能通过,一些测试需要检查它们在运行时是否是 root(使用我们自己的 am_root() 函数很有用)并避免在 作为 root 运行时失败。

使用 "act" 运行本地 GH Actions CI 工作流程

如果您在 macos 上开发但想确保在修改代码的同时在 Linux 上代码能构建和测试通过,您可以使用 act 工具在测试矩阵上运行 Github Actions 工作流程。

只需安装 "act"(brew install act)(如果您还没有,请先安装 docker 并确保守护进程正在运行),然后在命令行中运行 act

Macos: clang 检测和头文件查找

较新版本的 bindgen 提高了 clang 及其 macOS 头文件的检测能力。如果您还直接或通过 brew 安装了 llvm/clang,这可能会导致构建失败,显示无法找到 libproc.h。可以通过设置 CLANG_PATH="/usr/bin/clang" 来解决这个问题,这样 bindgen 就能检测到 Xcode 版本,从而找到正确的头文件。

许可协议

此代码受 MIT 许可协议许可(见 LICENCE)。

依赖项

~0–8.5MB
~70K SLoC