什么是节点子进程?

时间:2017-02-19 12:27:17

标签: javascript node.js child-process

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

儿童过程究竟是什么?这是一个类似的JavaScript网络工作者?

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

1 个答案:

答案 0 :(得分:3)

当您在Linux(bash进程)上运行终端并执行命令(例如ls -lh /usr)时,终端启动子进程ls,该进程将stdout写入所有文件当前目录。现在,您将node.js作为父进程,而不是终端。您可以像这样生成/启动子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}`);
});
  

这类似于javascript网络工作者吗?

它可能与网络工作者类似,但我不知道网络工作者是如何在浏览器中实现的。 AFAIK node没有开箱即用的webworkers API。但是,如果您的子进程是node.js进程,那么您可以查看此子进程类似于webworker的进程。看一下这个cluster API