如何从QNX的/proc文件系统中读取环境变量值?

How to read environment variables value from /proc file system in QNX?

提问人:Arun Nishad 提问时间:10/19/2023 最后编辑:James ZArun Nishad 更新时间:10/20/2023 访问量:39

问:

我想从文件系统中读取正在运行的进程的环境变量值。 我在 QNX 上找不到文件。 我知道我们如何从 getenv API 读取它,但我想从 ./proc/proc/<pid>/environ/proc/<pid>

QNX QNX-中微子

评论

0赞 tripleee 10/20/2023
/proc是一个非常特定于架构的东西。如果 QNX 没有此功能,那么您就是 SOL。

答:

1赞 Will Miles 10/20/2023 #1

据我所知,QNX 上没有易于使用的 API 以编程方式访问其他程序的环境。

如果您的应用程序允许,最简单的解决方案是使用 QNX 的 pidin -- run 将环境转储到标准输出。pidin -p <pid> environment

如果你不能生成额外的进程,我相信内部正在做的事情是这样的:pidin

  • 使用 DCMD_PROC_INFO 检索目标进程初始堆栈的虚拟地址;
  • 打开目标进程的地址空间 ,通过 查找初始堆栈地址,然后对其进行解析:/proc/<pid>/as
    • 第一个词是argc
    • 接下来是 ,所以跳过那么多 char*,加上 1argv
    • 接下来是环境变量的 char* 数组,以 null 结尾;您可以查找每个地址并阅读内容。