node子进程用法 exec execFile fork spawn

image.png

node子进程里有4个方法,

  • exec 主要用来执行一个shell方法,其内部还是调用了spawn ,不过他有最大缓存限制。
  • execFile 同上。
  • fork 这个用的比较多,子进程可以和父进程进行IPC通讯。
    记住,衍生的 Node.js 子进程独立于父进程,但两者之间建立的 IPC 通信通道除外。 每个进程都有自己的内存,带有自己的 V8 实例
    parent.js
const {fork} = require('child_process');
for(let i = 0; i < 3; i++){
    const p = fork('./child.js', [JSON.stringify({id:1,name:1})]);
    p.on('message', (msg) => {
        console.log(`messsgae from child msg=${JSON.stringify(msg)}`, );
    });
    p.send({hello:`来自爸爸${process.pid} 进程id=${i}的问候`});
}

child.js

const t = JSON.parse(process.argv[2]);
console.error(`子进程 t=${JSON.stringify(t)}`);
process.send({hello:`儿子pid=${process.pid} 给爸爸进程pid=${process.ppid} 请安`});
process.on('message', (msg)=>{
    console.error(`子进程 msg=${JSON.stringify(msg)}`);
});

输出结果:


image.png
  • spawn 这个比较原生。上面3个底层都是调用这个spawn.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近在做12306爬虫,刚好遇到了Node子进程的应用场景,不总结不快: Node的child_process模块...
    Devildi已被占用阅读 735评论 0 1
  • 进程与线程在服务端研发中是一个非常重要的概念,如果您在学习的时候对这一块感到混乱或者不是太理解,可以阅读下本篇内容...
    我是五月君阅读 1,121评论 0 0
  • 0. 背景 单线程运行模型Node.js架构在Chrome V8引擎之上,它的模型与浏览器类似,js代码运行在单个...
    十年一剑_阅读 2,969评论 0 0
  • 简介 node.js是基于单线程模型架构,这样可以带来高效的CPU利用率,但是无法却利用多核心的CPU,为了解决这...
    宛丘之上兮阅读 820评论 0 0
  • 背景 Node在V8引擎之上构建,其模型与浏览器类似,js将会运行在单个进程的单个线程上; 好处:程序状态是单一的...
    励志摆脱懒癌的少女酱阅读 787评论 0 0