Node.js 中的子进程 stdout 和 stderr 列大小
Child process stdout and stderr column sizes in Node.js
我想监控来自 Node.js 子进程的实时数据。我可以使用以下代码片段毫无问题地做到这一点。
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();
})();
问题是,正在 return 编辑并记录在 parseStreamDataIn() 中的数据被减少到每行 80 个字符(列),留下一半我想要丢失的数据。
trafficmon 运行 本身在终端中的示例 window(已手动扩展到 120 个字符宽)
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL cluster1.xxxxx.com
我的节点脚本示例 运行 相同的命令并将数据记录到相同大小的终端 window。
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL clus
如您所见,字符串的尾端被切掉了。
有什么方法可以告诉我的子进程 shell 到 return 每行超过 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);
我想监控来自 Node.js 子进程的实时数据。我可以使用以下代码片段毫无问题地做到这一点。
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();
})();
问题是,正在 return 编辑并记录在 parseStreamDataIn() 中的数据被减少到每行 80 个字符(列),留下一半我想要丢失的数据。
trafficmon 运行 本身在终端中的示例 window(已手动扩展到 120 个字符宽)
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL cluster1.xxxxx.com
我的节点脚本示例 运行 相同的命令并将数据记录到相同大小的终端 window。
EC:XX:XX:XX:XX:XX 131 1 0 0 1 128 120614 HTTPS SSL clus
如您所见,字符串的尾端被切掉了。
有什么方法可以告诉我的子进程 shell 到 return 每行超过 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);