提问人:Arun Nishad 提问时间:10/19/2023 最后编辑:James ZArun Nishad 更新时间:10/20/2023 访问量:39
如何从QNX的/proc文件系统中读取环境变量值?
How to read environment variables value from /proc file system in QNX?
问:
我想从文件系统中读取正在运行的进程的环境变量值。
我在 QNX 上找不到文件。
我知道我们如何从 getenv API 读取它,但我想从 ./proc
/proc/<pid>/environ
/proc/<pid>
答:
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*,加上 1
argv
- 接下来是环境变量的 char* 数组,以 null 结尾;您可以查找每个地址并阅读内容。
- 第一个词是
评论
/proc
是一个非常特定于架构的东西。如果 QNX 没有此功能,那么您就是 SOL。