评论

收藏

[JavaScript] node 进程管理 child_process [spawn,exec] | 珠峰培训node正式课 网络爬虫

开发技术 开发技术 发布于:2021-08-06 12:25 | 阅读数:310 | 评论:0

run.js
var i = 0;
function set(){
  i++
  setTimeout(function(){
    console.log(i)
    if(i<5){
      set();
    }
  },1000)
}set();
child_process demo
var child_process = require('child_process');
var fs = require('fs');
// spawn 是个流对象,可以通过监听它的data事件来获取里面的控制台输出
// exec 命令执行完毕后调用回调函数 stdout 存放子进程‘执行完毕’后所有的输出内容
// 创建一个  执行命令 用 spawn
function execNodeFile(fileName){
  // spawn 第一个参数:可执行文件的名字 
  // process.execPath;当前执行文件的路径 也就是node
  var pro = child_process.spawn(process.execPath,[fileName])
  // 把子进程的标准输出注入到当前主进程的标准输出
  pro.stdout.pipe(process.stdout);
  pro.stderr.pipe(process.stderr);
  // 当子进程出错的时候
  pro.on('error',function(err){
    console.log(err);
  })
  // 当子进程结束也关闭主进程
  pro.on('close',function(){
    console.log('pro is close!')
    // process.exit();
  })
}
execNodeFile('run.js');//console.log('chil process run.js');
// 创建一个 子进程 执行命令 用 exec
function execNodeFile2(cmdorder){
  child_process.exec(cmdorder, (error, stdout, stderr) => {
    if (error) {
    throw error;
    }
    console.log(stdout);//stdout 子进程‘执行完毕’后所有的输出结果
  });
}
execNodeFile2('node run.js');//console.log('chil process run.js');
// 创建一个 下载命令
function download(url){
  var fileName = url.split('/').pop();
  // 创建一个可写流实例
  var ws = fs.createWriteStream('./temp/'+fileName);
  var curl = child_process.spawn('curl',[url]);
  curl.stdout.on('data',function(data){
    ws.write(data)
  })
  curl.stdout.on('end',function(){
    ws.end();
  })
}
download("http://xyq.cbg.163.com/cgi-bin/equipquery.py?act=overall_search_show_detail&serverid=127&ordersn=280_1502047682_282090408&equip_refer=1")
function download_1(url){//会报错
  // var fileName = url.split('/').pop();
  child_process.exec('curl '+url+' -o page2.txt',function(err,stdout,stderr){
    if(err){
      console.log(err)
      return;
    }
    console.log(stdout)
  });
}
download_1("http://xyq.cbg.163.com/cgi-bin/equipquery.py?act=overall_search_show_detail&serverid=127&ordersn=280_1502047682_282090408&equip_refer=1")


关注下面的标签,发现更多相似文章