C语言 在讨论进程地址空间的字符串部分时,什么是对齐

iezvtpos  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(72)

我正在编写一个程序来暴露macOS上其他pids的参数。我已经做了KERN_PROCARGS2sysctl,但结果发现每个人和他们的狗都用错了这个。包括苹果的ps和谷歌的Chrome。exec家族的函数都允许你以argv[0]的形式传递空字符串。这种情况下,向前跳过返回缓冲区中exec_path后面的NULL的标准方法不起作用,因为最后一个NULL实际上是一个空字符串的终止字符,所以你跳过了一个你不想跳过的参数,这会导致将env var作为参数输出(我已经在许多程序中证实了这种行为)。
为了正确地执行这个操作,必须计算要跳过多少个空值,而不是每次都跳过它们。在Web上有引用返回的缓冲区的不同部分是指针对齐的,但是无论我尝试使用len % 8检查缓冲区的哪个部分,我都没有得到正确的填充NULL的计数。

相关问题