簡體   English   中英

node.js:在新窗口中運行外部命令

[英]node.js: Run external command in new window

我正在編寫一個node.js腳本,該腳本在后台永久運行,並不時啟動文件下載。 我想使用WGET下載文件,因為它看起來更健壯,直到我真的知道我在用node.js做些什么。

問題是我想查看相關下載的進度。 但是我找不到以打開並顯示WGET的新外殼窗口的方式通過node.js啟動WGET的方法。

Node的exec和spawn函數在后台運行外部命令,讓我可以訪問輸出流。 但是由於我的腳本在后台運行(隱藏),所以我對輸出流的處理不多。

我嘗試通過運行“ cmd / c wget ...”打開一個新的Shell窗口,但這沒有任何區別。

有沒有一種方法可以通過node.js在新窗口中運行外部命令行進程?

您可以為此使用node-progress和Node的http客戶端(或requesT),而無需wget:

https://github.com/visionmedia/node-progress

例:

var ProgressBar = require('../')
  , https = require('https');

var req = https.request({
    host: 'download.github.com'
  , port: 443
  , path: '/visionmedia-node-jscoverage-0d4608a.zip'
});

req.on('response', function(res){
  var len = parseInt(res.headers['content-length'], 10);

  console.log();
  var bar = new ProgressBar('  downloading [:bar] :percent :etas', {
      complete: '='
    , incomplete: ' '
    , width: 20
    , total: len
  });

  res.on('data', function(chunk){
    bar.tick(chunk.length);
  });

  res.on('end', function(){
    console.log('\n');
  });
});

req.end();

更新:

由於您想在后台進程中執行此操作並偵聽下載進度(在單獨的進程中或您擁有什么),因此可以使用pub-sub功能來實現此目的,可以:

  • 使用消息隊列,例如Redis,RabbitMQ或ZeroMQ
  • 在已知端口/ UNIX域上啟動TCP服務器並收聽

資源:

http://nodejs.org/api/net.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM