6 个版本

0.2.2 2024 年 8 月 10 日
0.2.1 2024 年 2 月 8 日
0.2.0 2023 年 3 月 6 日
0.1.2 2022 年 12 月 16 日

35macOS 和 iOS API

Download history 15/week @ 2024-07-22 93/week @ 2024-08-05 20/week @ 2024-08-12

每月 128 次下载

BSD-3-Clause

22KB
299

getargv

Rust CI

libgetargv 是一个库,允许您获取在 macOS 上传递给另一个正在运行的进程的参数。它旨在提供与在 Linux 上读取 /proc/<pid>/cmdline 相似的功能。在 macOS 上,这是通过解析 KERN_PROCARGS2 sysctl 的输出来完成的,该 sysctl 由于忽略了传递给目标进程的空参数的起始可能性,通常实现得 不正确。这个 crate 是 libgetargv 库的 Rust 绑定。

权限

libgetargv 默认只能查看与同一用户运行的进程,因此请确保您的进程以所需用户运行(setuidlaunchd.plistsudo)或可以 提升权限;请注意,安全地提升权限 非常复杂,并且将成为 macOS 上权限提升攻击的目标,因此如果您选择此途径,请务必非常小心,最好将权限提升委托给用户,按需为您提升权限。

系统要求

需要 macOS,因为这是一个 macOS 特定的 sysctl,即使是 BSD 也没有实现它。您的系统必须支持 sysctlKERN_PROCARGS2,这意味着 macOS 10.3 或更高版本,尽管我还没有测试过低于 10.7 的版本。您还需要一个非旧版的 clang(需要 c99),或者您必须使用 CCEXTRA_CPPFLAGSEXTRA_CFLAGS 覆盖编译器标志。

构建 getargv

要构建 getargv

  • libgetargv 安装到您的系统中(见下文)。
  • 克隆此仓库并运行 cargo build
  • 将软件包添加到您的 Cargo.toml 文件的依赖项中。
[target.'cfg(target_vendor = "apple")'.dependencies]
getargv = "~0.2.0"

安装 libgetargv

要访问 libgetargv,请注册相应的 赞助级别

克隆 libgetargv 仓库:git clone https://github.com/getargv/getargv.git

运行 make install_dylib,默认情况下将库安装到 /usr/local/ 前缀;您可以使用 PREFIX make 变量更改安装位置: make PREFIX=/opt install_dylib

我正在努力构建无需编译即可安装的二进制工件,使用 pkg 安装程序,然而即使完成之后,根据您的系统,可能仍然需要从源代码编译;例如,如果您已构建了具有自定义 PID_MAX 值的 xnu 内核。

构建 libgetargv

我在 macOS 10.7-13 上构建了 libgetargv,仅使用 CLT 软件包,而不是完整的 Xcode 安装。如果您需要覆盖变量,请在 make 命令内部进行操作,例如: make EXTRA_CPPFLAGS=-DMACRO EXTRA_CFLAGS=-std=c17 dylib。如果您正在尝试在 10.7 之前的 macOS 版本上构建,请告诉我结果。

依赖项

~195KB