讨论进程地址的字符串部分时所指的对齐方式是什么 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
我都没有得到正确的填充计数 NULL
s.
就是保存的exec_path
的长度需要补成系统指针长度的倍数
我正在尝试编写一个程序来公开 macOS 上其他 pids 的参数。我做了 KERN_PROCARGS2
sysctl
,但事实证明每个人和他们的狗都用错了。包括 Apple 的 ps
和 Google 的 Chrome。 exec
系列函数都允许您将空字符串作为 argv[0]
传递,这不是很好,但它可能会发生,因此必须加以处理。在这种情况下,向前跳过返回缓冲区中 exec_path
之后的 NULL
的标准方法不起作用,因为在其余参数之前的最后一个 NULL
实际上是空字符串的终止 NULL
,所以你最终会跳过一个你不想跳过的参数,这可能会导致打印一个环境变量作为参数(我已经在许多程序中证实了这种行为)。
要正确执行此操作,必须计算要跳过多少个空值,而不是每次都跳过它们。网络上有对指针对齐的返回缓冲区的不同部分的引用,但是无论我尝试检查缓冲区的哪一部分 len % 8
我都没有得到正确的填充计数 NULL
s.
就是保存的exec_path
的长度需要补成系统指针长度的倍数