gpt4 book ai didi

node.js - 将 Node 标志/参数传递给子进程

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:49 24 4
gpt4 key购买 nike

如果我们在 Node 中 fork 一个 child_process,我们如何将 Node 参数传递给 child_process?

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

具体来说,我想生成约 20 个进程,并想通过使用 --v8-options 来限制每个进程的内存使用,但我找不到任何这样做的例子 - 这可能吗?进程采用与父进程相同的 Node 参数?

parent 是:

node foo.js

children 会是

node --some-flag=bar baz.js

...

我希望使用

传递 Node 选项
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

如果不这样做,您将获得与您正在“ fork ”的 Node 进程相同的选项(它实际上只是一个 spawn,而不是 POSIX fork )。

所以你可以这样做:

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

如果你想传递来自父 Node 的 Node 选项:

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.js - 将 Node 标志/参数传递给子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com