var iconv = require(‘iconv-lite’); var ls= require(‘child_process’).spawn('ping’, [‘www.baidu.com’]);
var MAX=2; var count=1;
ls.stdout.on(‘data’, function (data) { var buffer = new Buffer(data); var str = iconv.decode(buffer, ‘gbk’); console.log(count+’ stdout: ' + str); count++
if( count > MAX ){
return;
}
});
这个return不起作用
9 回复
if (condiction) {
ls.kill('SIGINT'); // or ls.kill(0)
}
在遇到某一个情况的时候这样把子进程干掉就可以了。具体你想用什么方式来结束进程基本上都是 kill 方法里面传数字或者字符串的信号给子进程。如果你要分行的话用 pipe
多好:
var es = require('event-stream');
//....blabla
ls.stdout
.pipe(es.split('\n'))
.pipe(es.through(function(line) {
if (condition) {
ls.kill()
this.queue(null)
}
// do other stuffs....
// or pipe output to other dest stream
}))