Node.js子进程模块提供了以类似于popen(3)的方式生成子进程的函数。
创建子进程的主要方法有三种:
child_process.exec()方法在控制台中运行命令并缓冲输出。
语法:
child_process.exec(command[, options], callback)
参数:
1)command - 它使用空格分隔的参数指定要运行的命令。
2)options - 它可能包含以下一个或多个选项:
Callback - 回调函数指定三个参数error,stdout和stderr,当进程终止时,将使用以下输出调用该参数。
让无涯教程看一个简单的流程示例,以打印流程的体系结构,pid,平台和版本。
文件:child_process_example1.js.
const exec = require('child_process').exec; exec('my.bat', (err, stdout, stderr) => { if (err) { console.error(err); return; } console.log(stdout); });
创建名为my.bat的批处理文件,其中包含以下代码:
文件:my.bat
dir
mkdir child
打开Node.js命令提示符并运行以下代码:
node child_process_example1.js
它将执行两个命令dir和mkdir child。 dir命令将显示当前目录的列表,而mkdir命令将创建一个新目录。对于linux,可以使用ls命令显示当前目录列表。
它也会创建一个新目录。
创建两个名为support.js和master.js的js文件,其代码如下:
文件:support.js.
console.log("Child Process " + process.argv[2] + " executed." );
文件:master.js.
const fs = require('fs'); const child_process = require('child_process'); for(var i=0; i<3; i++) { var workerProcess = child_process.exec('node support.js '+i, function (error, stdout, stderr) { if (error) { console.log(error.stack); console.log('Error code: '+error.code); console.log('Signal received: '+error.signal); } console.log('stdout: ' + stdout); console.log('stderr: ' + stderr); }); workerProcess.on('exit', function (code) { console.log('Child process exited with exit code '+code); }); }
打开node.js命令提示符并运行以下代码:
node master.js
child_process.spawn()方法使用给定命令启动新进程。此方法返回流(stdout和stderr),通常在进程返回大量数据时使用。
语法:
child_process.spawn(command[, args][, options])
参数:
1)command - 它指定要运行的命令。
2)args - 它指定字符串参数的数组列表。
3)options - 它可能包含以下选项中的一个或多个:
创建两个名为support.js和master.js的js文件,其代码如下:
文件:support.js.
console.log("Child Process " + process.argv[2] + " executed." );
文件:master.js.
const fs = require('fs'); const child_process = require('child_process'); for(var i=0; i<3; i++) { var workerProcess = child_process.spawn('node', ['support.js', i]); workerProcess.stdout.on('data', function (data) { console.log('stdout: ' + data); }); workerProcess.stderr.on('data', function (data) { console.log('stderr: ' + data); }); workerProcess.on('close', function (code) { console.log('child process exited with code ' + code); }); }
打开node.js命令提示符并运行以下代码:
node master.js
child_process.fork方法是spawn()创建Node进程的一种特殊情况。除了将所有方法都包含在常规ChildProcess实例中之外,此方法还通过内置的通信通道返回对象。
语法:
child_process.fork(modulePath[, args][, options])
参数:
1)modulePath - 这是一个字符串,指定要在子进程中运行的模块。
2)args - 它指定字符串参数的数组列表。
3)options - 它可能包含以下选项中的一个或多个:
创建两个名为support.js和master.js的js文件,其代码如下:
文件:support.js.
const fs = require('fs'); const child_process = require('child_process'); for(var i=0; i<3; i++) { var worker_process = child_process.fork("support.js", [i]); worker_process.on('close', function (code) { console.log('child process exited with code ' + code); }); }
打开node.js命令提示符并运行以下代码:
node master.js
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)