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

问题描述 投票:0回答:1

我想从

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

qnx qnx-neutrino
1个回答
0
投票

据我所知,QNX 上没有易于使用的 API 可以通过编程方式访问另一个程序的环境。

如果您的应用程序允许,最简单的解决方案是使用 QNX 的

pidin
——运行
pidin -p <pid> environment
将环境转储到标准输出。

如果您无法生成额外的进程,我相信

pidin
在内部所做的事情类似于:

  • 使用
    DCMD_PROC_INFO
    获取目标进程初始堆栈的虚拟地址;
  • 通过/proc/<pid>/as
    打开目标进程的地址空间
    ,查找初始堆栈地址,并解析它:
    • 第一个词是
      argc
    • 接下来是
      argv
      ,所以跳过那么多字符*,再加上一个
    • 接下来是环境变量的 char* 数组,以 null 结尾;您可以寻找每个地址并阅读内容。
© www.soinside.com 2019 - 2024. All rights reserved.