node shell
node.js 子进程
ls -a //列出所有文件及文件夹,并显示所有隐藏文件
异步:(常用)
spawn,exec,execFile,fork
1,spawn
var child = require('child_process'); var du = child.spawn('ls', ['-a']); du.stdout.on('data', function (data) { console.log('输出内容是 ' + data); //输出的内容和直接执行ls -a的效果一样 }); du.stderr.on('data', function (data) { console.log('stderr: ' + data); }); du.on('exit', function (code) { console.log('child process exited with code ' + code); });
2,exec
//推荐,可直接一句话执行,并且有回调
var childProcess = require('child_process'); childProcess.exec('ls -a', function (error, stdout, stderr) { if (error) { console.log(error.stack); console.log('Error code: '+error.code); } console.log('输出内容是: '+stdout); });
3,execFile
//加载并执行命令文件,参数需要数组形式
var childProcess = require('child_process'); var path = "."; childProcess.execFile('/bin/ls', ['-l', path], function (err, result) { console.log(result) });
4,fork
//进程之间传参
//pather.js var childProcess = require('child_process'); var n = childProcess.fork('./son.js'); //引入要监听的模块 n.on('message', function(m) { console.log('儿子发来的信息: ', m); //此处是,老爸接受到儿子发来的信息 }); n.send({ hello: '儿子我是老爸' }); //此处是,老爸给儿子发送的信息 //son.js process.on('message', function(m) { console.log('老爸发来的信息:', m); //收到。老爸发来的信息 }); process.send({ Hello: '老爸我是儿子' }); //向老爸发送信息 process.exit(0); //儿子发数据给老爸后,任务完成退出。
同步:
spawnSync,execFileSync,execSync