当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js spawn()和fork()的区别用法及代码示例


在本文中,我们将讨论 Node.js 中spawn() 和 fork() 方法之间的区别。这两种方法都是在 Node.js 中创建子进程以处理不断增加的工作负载。

Spawn()方法:spawn进程在新进程中发起命令。我们可以将命令作为参数传递给它。生成函数的结果是一个实现 EventEmitterAPI 的子流程实例。事件处理程序可以附加或注册到创建的子实例。可以在该子实例上附加或注册的一些事件是断开连接、错误、关闭和消息等。

Parameters: 该方法接受以下参数。

  • command:它接受作为字符串运行的命令。
  • args: 它是字符串参数的列表。默认值为空数组。
  • options: 此选项对象可以具有各种属性,例如 stdio、uid、gid、shell 等。
    • shell:接受布尔值。如果为 true,则在 shell 内运行命令。不同的 shell 可以指定为字符串。默认值为 false,这意味着没有 shell。

返回值:它返回子进程的实例。


例子:这是一个非常简单且通用的spawn 使用示例。我们首先需要通过解构产生,然后通过传递参数创建一个子进程。然后在该子进程上注册一个标准输出事件。

Javascript


const { spawn } = require('child_process');
const child = spawn('dir', ['D:\\empty'], { shell: true });
child.stdout.on('data', (data) => {
  console.log(`stdout ${data}`);
});

输出:

由于使用了 fork 子进程,从 child.js 发送的消息正在文件 server.js 中打印。

Spawn 和 Fork 子进程的区别:

生成

Fork

一旦子进程开始执行,就会开始将数据从子进程发送回父进程。 这不会自动发送数据,但我们可以使用全局模块名称process从子进程发送数据,并在父模块中使用子进程的名称发送给子进程。
它通过命令创建新进程而不是在同一节点上运行进程。 它创建多个单独的进程(子进程),但所有这些进程都与父进程在同一节点进程上运行。
在此,不会创建新的 V8 实例。 在此,创建了一个新的 V8 实例。
当我们希望子进程向父进程返回大量数据时使用它。 它用于将 computation-intensive 任务与主事件循环分开。

相关用法


注:本文由纯净天空筛选整理自namancourses大神的英文原创作品 Difference between spawn() and fork() methods in Node.js。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。