异步进程创建方法:
Spawning .bat and .cmd files on Windows
child_process.exec(command[, options][, callback])
child_process.execFile(file[, args][, options][, callback])
child_process.fork(modulePath[, args][, options])
child_process.spawn(command[, args][, options])
同步进程创建方法:
nchronous process creation
child_process.execFileSync(file[, args][, options])
child_process.execSync(command[, options])
child_process.spawnSync(command[, args][, options])
例子1:
child_process.exec(command[, options][, callback])
通过回调函数获取信息。
留意一下exit 和close 事件的区别。
close 是子进程离开并退出标准输入输出流
task.js:
console.log("Process ID:" + process.argv[2]);
multiProcess.js:
const fs = require('fs');
const child_process = require('child_process');
for(var i=0; i<5; i++) {
var workerProcess = child_process.exec('node C:\\learning\\multiProcess\\task.js '+i,
function (error, stdout, stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+error.code);
console.log('Signal received: '+error.signal);
}
if (stdout.length>0) {
console.log('stdout: ' + stdout);
}
if (stderr.length>0) {
console.log('stderr: ' + stderr);
}
});
workerProcess.on('exit', function (code) {
console.log('process exit with code:'+code);
});
workerProcess.on('close', function (code) {
console.log('process close with code:'+code);
});
}
例子2:
child_process.spawn(command[, args][, options])
等待收取信息
const fs = require('fs');
const child_process = require('child_process');
var workerProcess = child_process.spawn('node',['C:\\learning\\multiProcess\\task.js',1]);
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('process close with code:'+code);
});
结果
例子3:
child_process.fork(modulePath[, args][, options])
此方法可以用于父子进程交互,即互相收发信息。
process.exit(1);为手动退出。