众所周知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实例所具有的所有方法,所返回的对象还具有内建的通讯通道。

最新文章

  1. CF750E New Year and Old Subsequence
  2. 使用C#类向数据库添加数据的例子源码
  3. MySQL存储过程中实现回滚
  4. s1=s1+1与s1+=1的区别
  5. Python中的模块与包
  6. C实现多线程
  7. udt nat traverse
  8. python成长之路——第八天
  9. linux根据部署jenkins
  10. Android 学习笔记之实时保存数据-现场保护onSaveInstanceState()
  11. React中的路由系统
  12. git解析日志常用命令
  13. 【大数据安全】CDH集群禁用Kerberos
  14. MapReduce-CombineTextInputFormat 切片机制
  15. 项目里如何访问AppDelegate
  16. redis/memcached可视化客户端工具TreeNMS
  17. (原)阅读Android-Camera2Video的demo源码和调试心得
  18. [Spring] Spirng中的AOP进行事务的传播属性和事务隔离级别
  19. 使用curator框架简单操作zookeeper 学习笔记
  20. spring结合mockito

热门文章

  1. Linux,Unix各种版本的操作系统在线安装软件命令
  2. javascript第十五课:DOM
  3. bash 学习笔记(一)
  4. spring mvc <mvc:annotation-driven>配置使用出现故障
  5. 实现在Android 多点手势识别
  6. Bctf-pwn_ruin-re_lastflower
  7. 【MFC学习笔记-作业10-稍微难一点的画图】
  8. Sublime 学习记录(三) Emmet 插件
  9. 详解Linq to SQL
  10. Struts2 实现文件上传