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")