什么是节点子进程?

What is a node child process?

我正在阅读一个包含 child_process 库的 node.js 项目。

到底什么是子进程?这类似于 javascript 网络工作者吗?

运行 进程在子进程中而不是简单地正常执行它有什么好处?我假设这是如何让您更多地访问内存的?

当您在 Linux 上 运行 终端(bash 进程),并执行一个命令,例如 ls -lh /usr,终端启动一个 child进程 ls,写入 stdout 当前目录中的所有文件。现在想象一下,您将 node.js 作为 parent 进程,而不是终端。您可以 spawn/start child ls 过程如下:

const spawn = require('child_process').spawn;
const ls = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});

Is this similar a javascript web worker?

它可能类似于 webworkers,但我不知道 webworkers 在浏览器中是如何实现的。 AFAIK node 没有开箱即用的 webworkers API。但是,如果您的 child 进程是 node.js 进程,那么您可以将此 child 进程视为类似于 webworker 的东西。看看这个cluster API.