我如何redirectstdout祝福?

长话短说:我想为开发守护进程构build一个CLI。 守护进程输出不同types的信息到标准输出,我想将这些信息以可滚动的方式传递给屏幕区域中的用户。 我正在努力获得标准的祝福。 下面简单的原型,其中缓冲stdout,所以信息永远不会完整。

var blessed = require('blessed'); var screen = blessed.screen(), body = blessed.box({ top: 1, left: 0, width: '100%', height: '99%' }), statusbar = blessed.box({ top: 0, left: 0, width: '100%', height: 1, style: { fg: 'white', bg: 'blue' } }); screen.append(statusbar); screen.append(body); screen.key(['escape', 'q', 'C-c'], function(ch, key) { return process.exit(0); }); function status(text) { statusbar.setContent(text); screen.render(); } function log(text) { body.insertLine(0, text); screen.render(); } status('TEST'); var spawn = require('child_process').spawn; yes = spawn('yes', ['it is']); ls.stdout.on('data', function (data) { log(data.toString()); }); ls.stderr.on('data', function (data) { log(data.toString()); }); 

该线

 var screen = blessed.screen() 

采取参数来改变input来自哪里,输出也在哪里。 从逻辑上讲,它们被命名为input和输出:

 var screen = blessed.screen({ input: some_input_stream, output: some_output_stream }) 

所以,你只需要将一个可写入(或双工)streaminput到输出参数中即可。 然后,你可以在任何你想要的地方输出输出。