【问题标题】:Can we read environment variables of child from parent process我们可以从父进程中读取子进程的环境变量吗
【发布时间】:2013-07-02 10:35:20
【问题描述】:

我知道fork会创建一个子进程,然后子进程中的execve会执行设置一些环境变量的程序。

我的任务是,我的父进程 parent1 在 fork/exec 过程之后最初创建了一个子进程 Child1 并设置了一个环境变量“CHILD=first”。

后来在父进程的执行中,我又创建了一个子进程 Child2 遵循相同的 fork/exec 过程。这个 child2 有一个环境变量设置为“CHILD=second”。

现在,稍后在父进程的执行中,我必须从 Parent1 中读取 child1 和 child2 的所有环境变量,以根据 env 值进行一些操作。是否可以从父进程中读取这些子环境变量?如果是这样,我该怎么做?

【问题讨论】:

  • 使用可以检查使用任何IPC 机制,如管道,..
  • 为什么不在父级中保持“子状态”?
  • 你为什么要这个?父进程应该在自己的数据结构中维护有关其子进程的有趣信息,可能由进程 ID 索引。
  • 见Q&A here。

标签: c++ c linux unix


【解决方案1】:

您可以在 Linux 上从/proc/<pid>/environ 读取环境。变量由空字符分隔。

【讨论】:

  • /proc/<pid>/environ中的值不会动态更新,只是显示进程的初始环境。从这个问题中我不清楚 CHILD 的值是在分叉前设置还是只在孩子中设置,所以阅读/proc/<pid>/environ 可能没有用。
  • 嗯,在这种情况下,他将需要 IPC,通过管道、文件或共享内存。
猜你喜欢
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2020-01-25
  • 2016-10-20
  • 1970-01-01
  • 2014-01-03
  • 2019-02-02
  • 1970-01-01
相关资源
最近更新 更多