NodeJS —使用函数字符串而不是文件的Fork子进程

时间:2019-03-07 16:12:11

标签: node.js fork child-process

我已经看过documentation中的fork方法,它仅描述了提供子模块文件的文件路径。

有人知道是否有可能(和没有记录)直接通过子模块而不是通过文件传递子模块?重点是,我想动态生成模块,然后用它创建一个子进程。

1 个答案:

答案 0 :(得分:0)

这是不可能的-fork()创建了一个完全不同的进程,该进程不与其父进程共享上下文或变量。

您可以选择的一个方法是在派生进程中生成模块,并通过命令行或临时文件将必要的参数传递给它,以便您的孩子可以运行:

const data = 'something;
var childProcess = child_process.fork(__dirname + '/worker', [something]);

然后您可以使用process.argv[2]从子级访问参数。

该方法的局限性在于,您只能传递数据类型,而不能在其父级上下文中从工作程序调用任何函数。您需要在子代与父代之间使用某种RPC,这不在此答案的范围内。