我想监视来自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
我的节点脚本示例运行相同的命令并将数据记录到相同大小的终端窗口中。
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL clus
如您所见,字符串的尾部被切掉了。
有什么办法可以告诉我的子进程外壳每行返回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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句