subprocessNode.js中的stdout和stderr列大小

我想监视来自Node中subprocess的实时数据。 我可以做到这一点没有问题,下面的代码片段。

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(); })(); 

问题是,数据被返回并logging在parseStreamDataIn()被削减到每行80个字符(列),留下一半我想失踪的数据。

在terminal窗口中自行运行的trafficmon示例(手动扩展为120个字符)

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

我的节点脚本运行相同命令并将数据logging到相同大小的terminal窗口中的示例。

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

正如你所看到的那样,弦的尾端被切断了。

有什么办法可以告诉我的subprocessshell每行返回80列以上?

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