【发布时间】:2016-09-05 05:55:06
【问题描述】:
我想监控来自 Node.js 中子进程的实时数据。我可以使用以下代码 sn-p 毫无问题地做到这一点。
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
如您所见,字符串的尾端被切断了。
有什么方法可以告诉我的子进程 shell 每行返回超过 80 列?
【问题讨论】:
标签: node.js bash shell process pipe