process子进程模块的使用方法示例(3)

const {fork} = require('child_process'); let cp1 = fork('2.js', [], { cwd: process.cwd(), env: process.env, silent: false }); //接收消息 cp1.on('message', function (data) { console.log('父进程收到 : ', JSON.stringify(data)); process.exit(0); }); //发送消息 cp1.send({name: '你好子进程'});

2.js的代码:

process.on('message', function (data) { console.log('子进程收到 : ', JSON.stringify(data)); process.send({name: '你好父进程'}); });

3、通过exec() 创建子进程

exec() 可以开启一个子进程运行命令,并缓存子进程的输出结果。

const {exec} = require('child_process'); //参数一表示,要运行的命令 //参数二表示,配置选项 //参数三表示,进程终止时的回调 exec('dir', { //子进程的工作目录 cwd: process.cwd(), //子进程的环境变量 env: process.env, //输出的编码 encoding: 'utf8', //超时时间 timeout: 60 * 1000, //缓存stdout,stderr最大的字节数 maxBuffer: 1024 * 1024, //关闭子进程的信号 killSignal: 'SIGTERM' }, function (err, stdout, stderr) { console.log(stdout.toString()); });

4、通过 execFile() 创建子进程

使用 execFile() 开启一个运行可执行文件的子进程。

const {execFile} = require('child_process'); //参数一表示,可执行文件的名称或路径 //参数二表示,参数列表 //参数三表示,配置选项 //参数四表示,进程终止时的回调 let cp1 = execFile('node', ['3.js', '1', '2', '3'], { //子进程的工作目录 cwd: process.cwd(), //子进程的环境变量 env: process.env, //输出的编码 encoding: 'utf8', //超时时间 timeout: 60 * 1000, //缓存stdout,stderr最大的字节数 maxBuffer: 1024 * 1024, //关闭子进程的信号 killSignal: 'SIGTERM' }, function (err, stdout, stderr) { if (err) { console.log(err); process.exit(); } console.log('子进程的输出 : ', stdout.toString()); }); cp1.on('error', function (err) { console.log(err); });

3.js的代码:

process.argv.forEach(function (value) { process.stdout.write(value + '\r\n'); });

fork(),exec(),execFile() 都是基于 spawn() 的封装。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/27ad344ec2ae3d58cdb0e11060d98d2b.html