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();
})();
문제는 parseStreamDataIn ()에 반환되고 기록되는 데이터가 행당 80 자 (열)로 줄어들고 원하는 데이터의 절반이 누락된다는 것입니다.
터미널 창에서 자체적으로 실행되는 트래픽 몬의 예 (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] 삭제
몇 마디 만하겠습니다