讨论进程地址的字符串部分时所指的对齐方式是什么 space

What are the alignments referred to when discussing the strings section of a process address space

我正在尝试编写一个程序来公开 macOS 上其他 pids 的参数。我做了 KERN_PROCARGS2 sysctl,但事实证明每个人和他们的狗都用错了。包括 Apple 的 ps 和 Google 的 Chrome。 exec 系列函数都允许您将空字符串作为 argv[0] 传递,这不是很好,但它可能会发生,因此必须加以处理。在这种情况下,向前跳过返回缓冲区中 exec_path 之后的 NULL 的标准方法不起作用,因为在其余参数之前的最后一个 NULL 实际上是空字符串的终止 NULL,所以你最终会跳过一个你不想跳过的参数,这可能会导致打印一个环境变量作为参数(我已经在许多程序中证实了这种行为)。

要正确执行此操作,必须计算要跳过多少个空值,而不是每次都跳过它们。网络上有对指针对齐的返回缓冲区的不同部分的引用,但是无论我尝试检查缓冲区的哪一部分 len % 8 我都没有得到正确的填充计数 NULLs.

就是保存的exec_path的长度需要补成系统指针长度的倍数