gpt4 book ai didi

c - 如何在 LD_PRELOAD 库中获取命令行参数

转载 作者:行者123 更新时间:2023-12-04 07:22:13 24 4
gpt4 key购买 nike

例如,我想从 LD_PRELOAD 库中获取 argv,假设我们调用

    LD_PRELOAD=/path/to/my/fopen ./program input

在我的自定义 fopen 中,我想获得“输入”,因此是我程序的 argv[1](还有 argv[2] 等等)。可能吗?怎么办?

最佳答案

读取整个 /proc/self/cmdline 文件。命令行参数用 \0 分隔。

参见 man proc了解全部详情。

没有 C 标准库或错误处理的 Linux 示例:

#include <unistd.h>
#include <fcntl.h>
#include <linux/limits.h>

int main() {
ssize_t i, n;
char cmdline[ARG_MAX];
int cmdline_fd = open("/proc/self/cmdline", O_RDONLY);
n = read(cmdline_fd, cmdline, sizeof cmdline);
for(i = 0; i < n; ++i)
if(!cmdline[i])
cmdline[i] = ' ';
cmdline[n - 1] = '\n';
write(STDOUT_FILENO, cmdline, n);
return 0;
}

供引用的Python版本:

cmdline = open('/proc/self/cmdline', 'r').read().replace('\0', ' ').strip()
print(cmdline)

关于c - 如何在 LD_PRELOAD 库中获取命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68422543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com