node . js 中产卵()和分叉()方法的区别
原文:https://www . geesforgeks . org/difference-fork-methods-in-node-js/
在本文中,我们将讨论 Node.js 中的产卵()和分叉()方法之间的区别。这两种方法都是在 Node.js 中创建子进程的方法,以便处理不断增加的工作负载。
产卵()方法:产卵过程在新的进程中发起命令。我们可以将命令作为参数传递给它。派生函数的结果是一个实现 EventEmitterAPI 的子进程实例。事件处理程序可以附加或注册到创建的子实例。可以在该子实例上附加或注册的一些事件是断开连接、错误、关闭和消息等。
参数:该方法接受以下参数。
- 命令:它接受以字符串形式运行的命令。
- 参数:是字符串参数的列表。默认值为空数组。
- 选项:这个选项对象可以有各种属性,比如 stdio、uid、gid、shell 等。
- shell: 接受布尔值。如果为真,则在外壳内部运行命令。不同的外壳可以指定为字符串。默认值为 false,这意味着没有外壳。
返回值:返回子进程的一个实例。
示例:这是一个非常简单且通用的使用产卵的示例。我们首先需要通过析构来生成,然后通过传递参数来创建一个子进程。然后在该子进程上注册一个 stdout 事件。
java 描述语言
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 发送的消息正在文件服务器. js 中打印。
Spawn 和 Fork 子进程的区别:
| Spawn | Fork | | --- | --- | | Once the child process starts executing, it starts sending data from the child process to the parent process. | This does not automatically send data, but we can use a global module name process to send data from the child process and in the parent module, send the process to the child process with the name of the child process. | | It creates a new process by command instead of running on the same node process. | It allows several separate processes (child processes) but all processes run on the same node process as the parent process. | | In this case, no new V8 instance will be created. | In this case, a new V8 instance will be created. | | Used when we want the child process to return a large amount of data to the parent process. | Used to separate computation-intensive tasks from the main event loop. |版权属于:月萌API www.moonapi.com,转载请注明出处