11 个版本
新版本 0.5.5 | 2024 年 8 月 9 日 |
---|---|
0.5.3 | 2024 年 2 月 8 日 |
0.5.2 | 2023 年 12 月 29 日 |
0.5.1 | 2023 年 3 月 6 日 |
0.3.0 | 2022 年 11 月 12 日 |
134 在 macOS 和 iOS API 中排名
每月下载 187 次
用于 getargv
92KB
334 行
libgetargv
是一个库,允许您获取 macOS 上其他正在运行进程传递的参数。它旨在提供与在 Linux 上从 /proc/<pid>/cmdline
读取大致相同的函数。在 macOS 上,这是通过解析 KERN_PROCARGS2
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-sys
为了构建 getargv-sys
- 将
libgetargv
安装到您的系统上(见下文)。 - 克隆此存储库并运行
cargo build
或 - 将
getargv-sys = "0.5.1"
添加到您的Cargo.toml
文件依赖项中。
安装 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 版本上构建,请告诉我结果。
依赖项
~0–2MB
~38K SLoC