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 日 |
35 在 macOS 和 iOS API
每月 128 次下载
22KB
299 行
libgetargv
是一个库,允许您获取在 macOS 上传递给另一个正在运行的进程的参数。它旨在提供与在 Linux 上读取 /proc/<pid>/cmdline
相似的功能。在 macOS 上,这是通过解析 KERN_PROCARGS2
sysctl 的输出来完成的,该 sysctl 由于忽略了传递给目标进程的空参数的起始可能性,通常实现得 不正确。这个 crate 是 libgetargv
库的 Rust 绑定。
权限
libgetargv
默认只能查看与同一用户运行的进程,因此请确保您的进程以所需用户运行(setuid
、launchd.plist
、sudo
)或可以 提升权限;请注意,安全地提升权限 非常复杂,并且将成为 macOS 上权限提升攻击的目标,因此如果您选择此途径,请务必非常小心,最好将权限提升委托给用户,按需为您提升权限。
系统要求
需要 macOS,因为这是一个 macOS 特定的 sysctl
,即使是 BSD 也没有实现它。您的系统必须支持 sysctl
和 KERN_PROCARGS2
,这意味着 macOS 10.3 或更高版本,尽管我还没有测试过低于 10.7 的版本。您还需要一个非旧版的 clang(需要 c99),或者您必须使用 CC
、EXTRA_CPPFLAGS
和 EXTRA_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