1.软文推荐

2.软文推荐

3.软文推荐

Node.js 是一个跨平台的 JavaScript 运行时环境。 Node.js 使用高效、轻量级的事件驱动、非阻塞 I/O 模型。Node.js 的生态系统是目前最大的开源包管理系统。

Node.js 是一套用来编写高性能网络服务器的 JavaScript 工具包,一系列的变化由此开始。比较独特的是,Node.js 会假设你是在 POSIX 环境下运行它 Linux 或 Mac OS X。如果你是在 Windows 下,那就需要安装 MinGW 以获得一个仿 POSIX 的环境。在 Node 中,Http 是首要的。Node 为创建 http 服务器作了优化,所以你在网上看到的大部分示例和库都是集中在 web 上 (http 框架、模板库等)。

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

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

Node 提供了 child_process 模块来创建子进程,方法有:

exec – child_process.exec 使用子进程执行命令,缓存子进程的输出,并将子进程的输出以回调函数参数的形式返回。
spawn – child_process.spawn 使用指定的命令行参数创建新进程。
fork – child_process.fork 是 spawn()的特殊形式,用于在子进程中运行的模块,如 fork(‘./son.js’) 相当于 spawn(‘node’, [‘./son.js’]) 。与spawn方法不同的是,fork会在父进程与子进程之间,建立一个通信管道,用于进程之间的通信。

exec() 方法

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

语法如下所示:

child_process.exec(command[, options], callback)
参数

参数说明如下:

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

options :对象,可以是:

cwd ,字符串,子进程的当前工作目录
env,对象 环境变量键值对
encoding ,字符串,字符编码(默认: ‘utf8’)
shell ,字符串,将要执行命令的 Shell(默认: 在 UNIX 中为/bin/sh, 在 Windows 中为cmd.exe, Shell 应当能识别 -c开关在 UNIX 中,或 /s /c 在 Windows 中。 在Windows 中,命令行解析应当能兼容cmd.exe
timeout,数字,超时时间(默认: 0)
maxBuffer,数字, 在 stdout 或 stderr 中允许存在的最大缓冲(二进制),如果超出那么子进程将会被杀死 (默认: 200*1024)
killSignal ,字符串,结束信号(默认:’SIGTERM’)
uid,数字,设置用户进程的 ID
gid,数字,设置进程组的 ID

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

exec() 方法返回最大的缓冲区,并等待进程结束,一次性返回缓冲区的内容。

实例

让我们创建两个 js 文件 support.js 和 master.js。

support.js 文件代码:

console.log(“进程 ” + process.argv[2] + ” 执行。” );

master.js 文件代码:

const fs = require(‘fs’); const child_process = require(‘child_process’); for(var i=0; i

执行以上代码,输出结果为:

$ node master.js
子进程已退出,退出码 0
stdout: 进程 1 执行。

stderr:
子进程已退出,退出码 0
stdout: 进程 0 执行。

stderr:
子进程已退出,退出码 0
stdout: 进程 2 执行。

stderr:

spawn() 方法

child_process.spawn 使用指定的命令行参数创建新进程,语法格式如下:

child_process.spawn(command[, args][, options])
参数

参数说明如下:

command: 将要运行的命令

args: Array 字符串参数数组

options Object

cwd String 子进程的当前工作目录
env Object 环境变量键值对
stdio Array|String 子进程的 stdio 配置
detached Boolean 这个子进程将会变成进程组的领导
uid Number 设置用户进程的 ID
gid Number 设置进程组的 ID

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

实例

让我们创建两个 js 文件 support.js 和 master.js。

support.js 文件代码:

console.log(“进程 ” + process.argv[2] + ” 执行。” );

master.js 文件代码:

const fs = require(‘fs’); const child_process = require(‘child_process’); for(var i=0; i

执行以上代码,输出结果为:

$ node master.js stdout: 进程 0 执行。

子进程已退出,退出码 0
stdout: 进程 1 执行。

子进程已退出,退出码 0
stdout: 进程 2 执行。

子进程已退出,退出码 0

fork 方法

child_process.fork 是 spawn() 方法的特殊形式,用于创建进程,语法格式如下:

child_process.fork(modulePath[, args][, options])
参数

参数说明如下:

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

args: Array 字符串参数数组

options:Object

cwd String 子进程的当前工作目录
env Object 环境变量键值对
execPath String 创建子进程的可执行文件
execArgv Array 子进程的可执行文件的字符串参数数组(默认: process.execArgv)
silent Boolean 如果为true,子进程的stdinstdoutstderr将会被关联至父进程,否则,它们将会从父进程中继承。(默认为:false
uid Number 设置用户进程的 ID
gid Number 设置进程组的 ID

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

实例

让我们创建两个 js 文件 support.js 和 master.js。

support.js 文件代码:

console.log(“进程 ” + process.argv[2] + ” 执行。” );

master.js 文件代码:

const fs = require(‘fs’); const child_process = require(‘child_process’); for(var i=0; i

执行以上代码,输出结果为:

$ node master.js
进程 0 执行。
子进程已退出,退出码 0
进程 1 执行。
子进程已退出,退出码 0
进程 2 执行。
子进程已退出,退出码 0

本文来源:www.lxlinux.net/10931.html,若引用不当,请联系修改。

相关文章 8

1

绠€鍗曚粙缁嶄竴涓婫itlab CI 1分钟前

Gitlab CI 鏄竴涓姛鑳介潪甯稿己澶х殑鎸佺画闆嗘垚绯荤粺锛屾湁寰堝涓嶅悓鐨勫姛鑳斤紝鑰屼笖姣忔鍙戝竷閮戒細澧炲姞鏂扮殑鍔...

4

通过命令行启动VMWare 5分钟前

工作中使用到在CentOS中安装VMWare Workstation部署虚拟机,以前都是使用图形界面启动虚拟机,由此要调整VNC的分辨率大小,重启VNC Server后所有...

5

珠海云服务器(珠海云科技有限公司) 7分钟前

目录:1、如何选择从电脑到网站服务器的路线2、智能多线的意思是什么?3、850游戏哪里人开的4、从未知道如何选择从电脑到网站服务器的路...

6

分享一下常用的在线开发工具 7分钟前

在开发过程中,有很多好用的在线工具可以提高我们的开发效率,本篇文章为大家分享一下常用的在线开发工具。 1. EnjoyCSS 老实说,虽然我...

7

ip地址的格式(不能作为ip地址的格式) 10分钟前

目录:1、IP地址格式是什么样的?2、IP地址的三种表示方式是什么3、什么是IP地址啊4、Ip地址格式是什么?5、ip地址的格式是怎样的IP地址格...

8

通过Linux cron 命令安排任务 11分钟前

cron 作业的命令存储在 Linux 系统上的 crontab 文件中,该文件通常位于 /etc/crontab 中。使用 $ crontab -l 显示 crontab 文件的内容。 在我 Linux 之旅...