node.js(七) 子进程 child_process模块

众所周知node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,通过多进程来实现对多核CPU的利用. child_process模块提供了四个创建子进程的函数,分别是spawn,exec,execFile和fork。

1.spawn函数的简单用法

spawn函数用给定的命令发布一个子进程,只能运行指定的程序,参数需要在列表中给出。如下示例:

  1. var child_process = require(‘child_process‘);
  2. var child = child_process.spawn( command );
  3. child.stdout.on(‘data‘, function(data) {
  4. console.log(data);
  5. });

通过执行命令得到返回结果,我们就可以拿到标准输出流数据了。

2.exec函数的简单用法

exec也是一个创建子进程的函数,与spawn函数不同它可以直接接受一个回调函数作为参数,回调函数有三个参数,分别是err, stdout , stderr,基本使用方法如下:

  1. var child_process = require(‘child_process‘);
  2. child_process.exec( command , function(err, stdout , stderr ) {
  3. console.log( stdout );
  4. });

exec函数可以直接接受一个回调函数作为参数,回调函数有三个参数,分别是err, stdout,stderr,非常方便直接使用,

3.execFile函数的简单用法

execFile函数与exec函数类似,但execFile函数更显得精简,因为它可以直接执行所指定的文件,基本使用方法如下:

  1. var child_process = require(‘child_process‘);
  2. child_process.execFile( file , function(err, stdout , stderr ) {
  3. console.log( stdout );
  4. });

execFile与spawn的参数相似,也需要分别指定执行的命令和参数,但可以接受一个回调函数,与exec的回调函数相同。

4.fork函数的简单用法

fork函数可直接运行Node.js模块,所以我们可以直接通过指定模块路径而直接进行操作。使用方法如下:

  1. var child_process = require(‘child_process‘);
  2. child_process.fork( modulePath );

该方法是spawn()的特殊情景,用于派生Node进程。除了普通ChildProcess实例所具有的所有方法,所返回的对象还具有内建的通讯通道。

时间: 2025-01-21 04:32:57

node.js(七) 子进程 child_process模块的相关文章

node之子线程child_process模块

node.js是基于单线程模型架构,这样的设计可以带来高效的CPU利用率,但是无法却利用多个核心的CPU,为了解决这个问题,node.js提供了child_process模块,用于新建子进程,子进程的运行结果储存在系统缓存之中(最大200KB),等到子进程运行结束以后,主进程再用回调函数读取子进程的运行结果.由此来实现对多核CPU的利用,且可以实现简单又使实用的非阻塞操作. 1. exec() exec()方法用于执行bash命令,它的参数是一个命令字符串. const exec = requi

Node.js笔记(0001)---connect模块

首先来看这一部分代码 1 /** 2 * Created by bsn on 14-7-1. 3 */ 4 var connect = require('connect'); 5 6 var app = connect(); 7 function hello(req, res, next) { 8 console.log(req.url); 9 res.end('hello bsn'); 10 next(); 11 } 12 13 function helloAgain(req, res) {

node.js第二天之模块

一.模块的定义 1.在Node.js中,以模块为单位划分所有功能,并且提供了一个完整的模块加载机制,这时的我们可以将应用程序划分为各个不同的部分. 2.狭义的说,每一个JavaScript文件都是一个模块:而多个JavaScript文件之间可以相互require,他们共同实现了一个功能,他们整体对外,又称为一个广义上的模块. 3.Node.js中,一个JavaScript文件中定义的变量.函数,都只在这个文件内部有效.当需要从此JS文件外部引用这些变量.函数时,必须使用exports对象进行暴露

Node.js进程通信模块child_process

前言 Node.js是一种单线程的编程模型,对Node.js的赞美和诟病的也都是因为它的单线程模型,所有的任务都在一个线程中完成(I/O等例外).单线程模型,不仅让代码非常简洁,更是直接避免了线程调度的复杂性:同样也是因为单线程,让CPU密集型计算应用,完全不适用. 在Node.js的内核中,给了我们一种新的选择,通过child_process模块创建新进程,从而实现多核并行计算. 目录 child_process介绍 child_process的基本使用:spawn, exec, execFi

node.js 创建子进程

创建father.js文件 /**************** * child_process模块提供产生子进程的方法 * 当有CPU密集型的任务,为了不阻塞事件循环, * 或者是执行一个外部命令可以,产生一个子进程, * 让子进程执行这个任务 * *******************/ var childProcess = require('child_process'); var exec = childProcess.exec; exec("ls", (err, stdout,

Node.js权威指南 (4) - 模块与npm包管理工具

4.1 核心模块与文件模块 / 574.2 从模块外部访问模块内的成员 / 58 4.2.1 使用exports对象 / 58 4.2.2 将模块定义为类 / 58 4.2.3 为模块类定义类变量或类函数 / 614.3 组织与管理模块 / 61 4.3.1 从node_modules目录中加载模块 / 61 4.3.2 使用目录来管理模块 / 62 4.3.3 从全局目录中加载模块 / 624.4 模块对象的属性 / 634.5 包与npm包管理工具 / 65 4.5.1 Node.js中的包

使用Node.js的socket.io模块开发实时web程序

首发:个人博客,更新&纠错&回复 今天的思维漫游如下:从.net的windows程序开发,摸到nodejs的桌面程序开发,又熟悉了一下nodejs,对“异步”的理解有了上上周对操作系统的学习而更能理解.然后发现了Node.js中的socket.io这个模块,又觉得跟前几天用.net做客户端的socket游戏了.技术世界,兜兜转转,相逢一笑,疑是故人. socket.io用来做实时web程序,解决之前的B/S程序只有无状态连接,特定需求还需要用长连接这种“奇技淫巧”的问题.当然,这是html

NODE.JS API —— Modules(模块)

// 说明 Node API 版本为 v0.10.31.    中文参考:http://nodeapi.ucdok.com/#/api/,http://blog.sina.com.cn/oleoneoy 本段为博主注解. 目录 ● 模块    ○ Cycles    ○ Core Modules    ○ File Modules    ○ Loading from node_modules Folders    ○ Folders as Modules    ○ Caching ■ Modul

node.js的fs核心模块读写文件操作 -----由浅入深

node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法- 文件大分流读取,stream - 引入fs模块 - let fs=require('fs') 同步读取文件 -fs.readFileSync('路径',utf8); let result=fs.readFileSync('./1.txt','utf8'); 异步读取文件,用参数err捕获错