2016-09-05 8 views
1

ノード内の子プロセスからのリアルタイムデータを監視したい。私は次のコードスニペットで問題なくこれを行うことができます。Node.jsの子プロセスstdoutとstderrカラムのサイズ

var fs = require('fs'); 
var spawn = require('child_process').spawn; 

(function(){ 

    "use strict"; 

    var processMonitor, processListen, processDeauth; 

    var parseStreamDataIn = function(data) { 

    var str = data.toString('utf8'); 
    console.log(str); 

    }; 

    var init = function() { 

    processMonitor = spawn('trafficmon' , ['-w'], {'shell': '/bin/bash'}); 

    processMonitor.stdout.on('data', function (data) { 
     //trafficmon uses stderr, nothing needed here... 
    }); 
    processMonitor.stderr.on('data', parseStreamDataIn); 
    processMonitor.on('close', function (code) { 
     processMonitor = null; 
    }); 

    }; 

    init(); 

})(); 

問題は、データがparseStreamDataIn(で返され、記録されている)は、私が行方不明たい半分のデータを残して、行あたり80の文字(列)に削減されています。

ターミナルウィンドウで単独で実行trafficmonの例(すなわち、手動ワイド120個の文字に拡張された)

EC:XX:XX:XX:XX:XX 131  1  0 0 1 128 120614 HTTPS SSL cluster1.xxxxx.com 

私のノードスクリプトは、同じコマンドを実行し、同じサイズの端末にデータをロギングの例窓。

EC:XX:XX:XX:XX:XX 131  1  0 0 1 128 120614 HTTPS SSL clus 

ご覧のとおり、文字列の末尾が切り取られています。

子プロセスシェルに行ごとに80個以上の列を返すように指示する方法はありますか?

答えて

3

pty.jsでは、列数などの項目を指定できます。

var pty = require('pty.js'); 

var term = pty.spawn('bash', [], { 
    name: 'xterm-color', 
    cols: 80, 
    rows: 30, 
    cwd: process.env.HOME, 
    env: process.env 
}); 

term.on('data', function(data) { 
    console.log(data); 
}); 

term.write('ls\r'); 
term.resize(100, 40); 
term.write('ls /\r'); 

console.log(term.process); 
+0

これは私が必要としていたものです。ありがとうございます! –

関連する問題