node.js执行linux shell代码

2017-6-28    分类: nodejs笔记

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: '老爸我是儿子' }); //向老爸发送信息

 

 

同步:
spawnSync,execFileSync,execSync