将节点 flags/args 传递给 child 进程
Passing node flags/args to child process
如果我们在Node中fork一个child_process,我们如何将节点参数传递给child_process?
https://nodejs.org/api/child_process.html
具体来说,我想生成 ~20 个进程,并想通过使用 --v8-options 来限制每个进程的内存使用,但我找不到任何这样做的例子 - 这可能吗? child 进程采用与 parent?
相同的节点参数
parent 将是:
node foo.js
child人会是
node --some-flag=bar baz.js
...
我希望使用
传递节点选项
child_process.fork()
但如果只有
才有可能
spawn()
或
exec()
那我想我会得到我能得到的。
作为一个简单的例子,下面将 not 运行 Node.js with the --harmony flag
var cp = require('child_process');
var args = ['--harmony'];
var n = cp.fork(filePath, args , Object.create(process.env));
您需要将 execArgv
选项设置为 fork
。
如果不这样做,您将获得与您 'forking' 的节点进程相同的选项(它实际上只是 spawn
,而不是 POSIX-叉)。
所以你可以这样做:
var n = cp.fork(modname, {execArgv: ['--harmony']});
如果你想传递来自父节点的节点选项:
var n = cp.fork(modname, {execArgv: process.execArgv.concat(['--harmony'])}
警告: child_process
有一个保护措施来防止你用那个绕过的 -e
开关!所以不要使用 -e
或 -p
从命令行执行此操作。
您将使用与父进程相同的脚本创建一个新进程 – 一个 fork 炸弹。
如果您仍然希望能够通过环境将选项传递给 fork,您可以这样做:
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')
),但我很确定这是个坏主意,可能会导致其他地方出现奇怪的行为。
如果我们在Node中fork一个child_process,我们如何将节点参数传递给child_process?
https://nodejs.org/api/child_process.html
具体来说,我想生成 ~20 个进程,并想通过使用 --v8-options 来限制每个进程的内存使用,但我找不到任何这样做的例子 - 这可能吗? child 进程采用与 parent?
相同的节点参数parent 将是:
node foo.js
child人会是
node --some-flag=bar baz.js
...
我希望使用
传递节点选项child_process.fork()
但如果只有
才有可能spawn()
或
exec()
那我想我会得到我能得到的。
作为一个简单的例子,下面将 not 运行 Node.js with the --harmony flag
var cp = require('child_process');
var args = ['--harmony'];
var n = cp.fork(filePath, args , Object.create(process.env));
您需要将 execArgv
选项设置为 fork
。
如果不这样做,您将获得与您 'forking' 的节点进程相同的选项(它实际上只是 spawn
,而不是 POSIX-叉)。
所以你可以这样做:
var n = cp.fork(modname, {execArgv: ['--harmony']});
如果你想传递来自父节点的节点选项:
var n = cp.fork(modname, {execArgv: process.execArgv.concat(['--harmony'])}
警告: child_process
有一个保护措施来防止你用那个绕过的 -e
开关!所以不要使用 -e
或 -p
从命令行执行此操作。
您将使用与父进程相同的脚本创建一个新进程 – 一个 fork 炸弹。
如果您仍然希望能够通过环境将选项传递给 fork,您可以这样做:
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')
),但我很确定这是个坏主意,可能会导致其他地方出现奇怪的行为。