登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Programming
  3. Node.js
  4. 正文

Node.js速学之-子进程

2015-12-30
参考文献:[1][EN]Georgo Ornbo.傅强.陈宗斌. Node.js入门经典[M]. 北京:人民邮电出版社.2013.4-1

Child Process 子进程是由另一个进程所创建的进程,创建子进程的进程陈为父进程。父子进程可以通过STDIN、STDOUT或STDERR进行数据流交换。
一、父进程监听子进程标准输出示例

var spawn = require('child_process').spawn;
var ping = spawn('ping',['www.baidu.com']);//通过spawn生成子进程
ping.stdout.setEncoding('utf8');
ping.stdout.on('data',function(data){
    console.log(data);
})

二、杀死子进程

var spawn = require('child_process').spawn;
var ping = spawn('ping',['www.baidu.com']);//通过spawn生成子进程
ping.stdout.setEncoding('utf8');
ping.stdout.on('data',function(data){
    console.log(data);
})
ping.on('exit',function(code,signal){
    console.log('child process was killed with a '+ signal+' signal');
});
ping.kill('SIGINT');//Child process 模块提供kill()方法,通过该方法,可以传进想让kill消息发送的消息类型。如果为空,默认为SIGTERM信号

三、与子进程通信
Child Process 模块提供一个用于创建Node.js进程的紫荆城的方法,并提供让父子进程通信通道的能力,他叫做fork()。
PS:如果仅与系统命令交互,spawn优先。因为fork()的子进程是一个V8实例,需要花费30毫秒启动,及10MB内存消耗。

var fork = require('child_process').fork;
var child  = fork (__dirname + 'child.js');//创建fork子进程
child.on('message',function(m){
    console.log('parent process received message:',m);

});
child.send({'message':'Hello child'});

child.js内容

process.on('mesage',function(m){
    console.log('child process received mesage:',m);
});

四、集群(Cluster)模块
Node.js有一个模块用于让程序以集群的方式创建子进程,并且使用单个父进程先处理到来而将请求交给另外一个子进程处理。
Cluster模块启动一个父进程,并可按用于意愿启动任意多子进程;当然在该模块中也可以使用Fork()方法。

标签: 暂无
最后更新:2016-01-24

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号