c - 如何访问/打印 main 中的辅助 vector 条目?

标签 c linux stack

enter image description here

根据图像,堆栈在启动时填充有辅助 vector 条目。

我以前不知道。

我如何访问/打印它们?

int main(int argc, char *argv[], char *envp[]);

这是否意味着 main 有一个隐藏的第四个参数?

最佳答案

辅助 vector 位于环境 vector 末尾的后面,可以(根据 POSIX)作为 extern char **environ; 访问。 environ 指向指向环境变量的 char * 指针的空指针终止数组。遍历环境,直到到达 NULL,然后进一步推进一个元素并将结果转换为您想要用来访问辅助 vector 的任何类型。就个人而言,我将其视为成对出现的 size_tuintptr_t 值的数组,因为这比 elf.h 更容易和更便携> Elf32_auxv_tElf64_auxv_t 类型(无论您是为 32 位还是 64 位目标构建,这都要求您进行特殊处理)。

请注意,辅助 vector 的存在和位置并未由 POSIX 指定,但这是它们在任何使用辅助 vector 的基于 ELF-ABI 的实现中的位置。

关于c - 如何访问/打印 main 中的辅助 vector 条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244991/

相关文章:

linux - Linux下的伪随机栈指针?

c - 为什么在 32 位系统中包含一个 int64 变量时结构大小是 8 的倍数

c++ - 如何在一秒钟内调用方法/函数 50 次

C 研究元音和辅音 fork()

linux - 无法在 RHEL 上打开显示

linux - 如何在 Linux 中更新 Tclsh?

linux - 使用 Bash 脚本对时间戳/换行符之间的列求和

algorithm - 队列中的前 n 个元素

c - 用C程序访问sqlite

.net - 您如何更改托管可执行文件的默认堆栈大小.net