我想知道为什么在主节点流程中使用process.env.SOME_VARIABLE
创建的环境变量在使用Node Fork
API创建的任何子流程中都可用?
举个例子,我正在使用Electron构建一个桌面应用程序。在该应用程序中,我使用以下代码设置代理设置的envrionment变量:
process.env.HTTPS_PROXY = 'proxy server url';
现在,从这个应用程序中我需要在后台运行一些任务,为此我将使用Node的Fork
API启动新流程。我注意到的是,当我在子进程中打印此变量的值时,我得到了我在UI(父进程)中设置的值。
据我了解,当我使用Fork
生成子进程时,会创建一个完全独立于父进程的新进程(除了在它们之间创建的IPC通道)。如果这些进程彼此独立,那么为什么我在父进程中定义的这些环境变量在子进程中可用?
答案 0 :(得分:1)
你是部分正确的。每当调用fork()
进程时,新的子进程是独立的,正如你在IPC之外所说的那样正确。但关键是这个孩子继承了它的环境"来自其父母。基本上,任何环境'父母中的变量将是孩子的一部分,但任何“外壳”都是变量不会。类似的概念适用于“出口”#39;变量也是。