子进程模块:childProcess = require("child_process");
1、var spawn = childProcess.spawn(command, [,args],[,options]])
command: 只执行shell指令
args: 执行参数列表
options: 环境变量对象
其中环境变量对象有七个属性:
env: 环境变量键值对
cwd:子进程当前的工作目录
stdio: 子进程的stdio配置
customFds: 作为子进程stdio使用的文件标示符
uid: 用户进程ID
gid: 进程组ID
detached: 进程组主控制
//windows系统下的命令;
var spawn=require('child_process').spawn,
free=spawn('cat',['a.txt'],{cwd:'./a'});
// 捕获标准输出并将其打印到控制台
free.stdout.on('data',function(data){console.log('标准输出:'+data);});
// 捕获标准错误输出并将其打印到控制台
free.stderr.on('data',function(data){console.log('标准错误输出:'+data);})
;// 注册子进程关闭事件
free.on('exit',function(code,signal){console.log('子进程已退出,代码:'+code);});
2、childProcess.exec(command, function(err, stdout, stderr) { })
其中command是shell命令,相当于spawn的command+args
var childProcess = require("child_process");
childProcess.exec('node linyanxiang.js', function(err, stdout, stderr) {
console.log(stdout)
})
3.childProcess.execFile(command, [args], [options],function(error, stdout, stderr){});
是spawn与exec综合
command,args,options参数的含义与spawn的含义一样,回调函数的用法与exec一样。
4.fork 父进程与子进程之间建立通信
//父进程
var childProcess = require('child_process');
var subFork = childProcess.fork('sub.js');
subFork.on('message', function(m) {
console.log("message" + m);
})
subFork.send({'hell0': 'world'})
//子进程
process.on('message', function(m) {
console.log(m)
})
process.send({name:'dayday'})