• node.js(九 --- 多进程)


      node.js是以单线程的模式运行的,但是使用的是事件驱动来处理并发,这样有助于在多核cpu的系统上创建多个子进程,从而提高性能。

      每个子进程总共带有三个流对象:child.stdin、child.stdout和child.stderr;他们可能会共享父进程的stdio流,或者也可以是独立的被导流的流对象。

      node.js提供了child_process模块来创建子进程,方法有:exec、spawn、fork;

        exec: 

          child_process.exec使用子进程执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回;

          用法:child_process.exec(command, options, callback);

            command: 字符串,将要运行的命令,参数使用空格隔开;

            options: 对象,可以是:

              cwd,字符串,子进程的当前工作目录;

              env,对象环境变量键值对;

              encoding,字符串,字符编码(默认:'utf-8');

              shell,字符串,将要执行命令的Shell;

              timeout,数字,超时时间(默认:0);

              maxBuffer,数字, 在stderr中允许存在的最大缓冲(二进制),如果超出那么子进程将会被杀死(默认:200*1024);

              killSignal,字符串,结束信号(默认: 'SiGTERM');

              uid, 数字,设置用户进程ID;

              gid,数字,设置进程组的ID

            callback: 回调函数,包含三个参数error,stdout和stderr.

        spawn:

          child_process.spawn使用指定的命令行参数创建新进程;

          用法: child_process.spawn(command, args, options);

            command: 将要运行的命令;

            args: Array字符串参数数组;

            options Object:

              cwd Dtring,子进程的当前工作目录;

              env Object,环境变量键值对;

              stdio Array/String,子进程的stdio;

              detached Boolean,这个子进程将会变成进程组的领导;

              uid Number,设置用户进程的ID; 

              gid Number,设置进程组的ID;

          spawn()方法返回流(stdout & stderr),在进程返回大量数据时使用。进程一旦开始执行时spawn()就开始接收响应。

        fork:

          child_process.fork是spawn()的特殊形式,用于在子进程中运行的模块,如fork('./son.js')相当于spawn('node', './son.js');与spawn方法不同的是,fork会在父进程与子进程之间,建立一个通信管道,用于进程之间的通信;

          用法:child_process.fork(modulePath, args, options)

            modulePath:String,将要在子进程中运行的模块;

            args: Array字符串参数数组;

            options: Object

              cwd String子进程的当前工具目录;

              env Object环境变量键值对;

              execPath String,创建子进程的可执行文件;

              execArgv Array,子进程的可执行文件的字符串参数数组(默认:process.exexArgv);

              silent BOOlean,如果为true,子进程的stdin, stdout和stderr将会被关联至父进程,否则,它们将会从父进程中继承;(默认为:false);

              uid NUmber,设置用户进程的ID;

              gid Number, 设置进程组的ID;

          返回的对象除了拥有ChildProcess实例的所有方法,还有一个内建的通信信道。

  • 相关阅读:
    2015年校园招聘之腾讯(数据挖掘)笔试面试题目
    VBoxGuestAdditions.iso下载地址
    软件測试自学指南---从入门到精通
    C语言指针的初始化和赋值
    使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享
    完美攻略心得之圣魔大战3(Castle Fantisia)艾伦希亚战记(艾伦西亚战记)包含重做版(即新艾伦希亚战记)
    DatabaseMetaData的用法(转)
    Thread-safety with regular expressions in Java
    大象,大象
    使用 Java 实现 Comet 风格的 Web 应用
  • 原文地址:https://www.cnblogs.com/mufc/p/10113523.html
Copyright © 2020-2023  润新知