将节点标志/parameter passing给subprocess

如果我们在Node中派生一个child_process,我们如何将节点parameter passing给child_process?

https://nodejs.org/api/child_process.html

具体来说,我想产卵〜20进程,并希望通过使用 – v8选项限制每个内存的使用情况,但我找不到任何这样做的例子 – 这是可能的或做subprocess承担与父节点相同的节点参数?

父母将是:

node foo.js 

和孩子们会

 node --some-flag=bar baz.js 

我正在寻找使用节点选项

 child_process.fork() 

但如果只有可能

 spawn() 

要么

 exec() 

那么我想我会拿我能得到的。

作为一个简单的例子,下面的代码不会使用–harmony标志运行Node.js

  var cp = require('child_process'); var args = ['--harmony']; var n = cp.fork(filePath, args , Object.create(process.env)); 

您需要将execArgv选项设置为fork

如果你不这样做,你会得到与你分支的节点过程相同的选项(它实际上只是一个spawn ,而不是一个POSIX分叉)。

所以你可以做这样的事情:

 var n = cp.fork(modname, {execArgv: ['--harmony']}); 

如果你想传递父节点的选项:

 var n = cp.fork(modname, {execArgv: process.execArgv.concat(['--harmony'])} 

警告: child_process有一个安全的防止-e开关,你绕过了! 所以不要使用-e-p从命令行执行此操作。 你将用一个与父母相同的脚本创build一个新的stream程 – 一个叉形炸弹。

如果你仍然希望能够通过环境传递选项,你可以这样做:

 var cp = require('child_process'); var opts = Object.create(process.env); opts.execArgv = ['--harmony']; var n = cp.fork(filePath, opts); 

另一个选项可能是改变process.execArgv (像process.execArgv.push('--harmony') ),但我很确定这是一个坏主意,可能会导致奇怪的行为在其他地方。