作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个程序来公开 macOS 上其他 pids 的参数。我制作了 KERN_PROCARGS2
sysctl
,但事实证明每个人和他们的狗都用错了。包括Apple的ps
,以及Google的Chrome。 exec
系列函数都允许您将空字符串作为 argv[0]
传递,这不是很好,但它可能会发生,因此必须加以处理。在这种情况下,向前跳过返回缓冲区中 exec_path
之后的 NULL
的标准方法不起作用,因为最后一个 NULL
在其余参数之前实际上是一个空字符串的终止 NULL
,所以你最终会跳过一个你不想跳过的参数,这可能会导致打印一个 env var 作为参数(我已经在许多程序中证实了这种行为)。
要正确执行此操作,必须计算要跳过多少个空值,而不是每次都跳过它们。网络上有对指针对齐的返回缓冲区的不同部分的引用,但是无论我尝试使用 len % 8
检查缓冲区的哪一部分,我都没有得到正确的计数填充 NULL
s.
最佳答案
我写了一个库来正确地做到这一点:https://getargv.narzt.cam
关于c - 在讨论进程地址空间的字符串部分时,指的是什么对齐方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66943561/
我是一名优秀的程序员,十分优秀!