我希望能够监控来自Node中的子进程的实时数据。使用以下代码片段,我可以毫无问题地完成这项任务。
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
以下是我的Node脚本示例,运行相同的命令并将数据记录到相同大小的终端窗口中。
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL clus
如您所见,字符串的尾部被截断了。
有没有办法让我的子进程 shell 返回每行超过 80 列?
node-pty
软件包:https://www.npmjs.com/package/node-pty - derpedy-doo