是否在父和子之间共享环境变量(使用process.env创建)。子节点进程?

时间:2018-04-02 15:50:12

标签: node.js

我想知道为什么在主节点流程中使用process.env.SOME_VARIABLE创建的环境变量在使用Node Fork API创建的任何子流程中都可用?

举个例子,我正在使用Electron构建一个桌面应用程序。在该应用程序中,我使用以下代码设置代理设置的envrionment变量:

process.env.HTTPS_PROXY = 'proxy server url';

现在,从这个应用程序中我需要在后台运行一些任务,为此我将使用Node的Fork API启动新流程。我注意到的是,当我在子进程中打印此变量的值时,我得到了我在UI(父进程)中设置的值。

据我了解,当我使用Fork生成子进程时,会创建一个完全独立于父进程的新进程(除了在它们之间创建的IPC通道)。如果这些进程彼此独立,那么为什么我在父进程中定义的这些环境变量在子进程中可用?

1 个答案:

答案 0 :(得分:1)

你是部分正确的。每当调用fork()进程时,新的子进程是独立的,正如你在IPC之外所说的那样正确。但关键是这个孩子继承了它的环境"来自其父母。基本上,任何环境'父母中的变量将是孩子的一部分,但任何“外壳”都是变量不会。类似的概念适用于“出口”#39;变量也是。