如何阅读STDIN并启动福终端应用程序?

时间:2018-11-02 04:58:34

标签: node.js blessed

我正在构建Node.js应用。我正在尝试读取STDIN缓冲区,对其进行解析,然后启动我的有福程序,但是,如果我尝试读取STDIN,我的有福程序会立即关闭。 另外,输入无效。

这里是一个例子:

// Read stdin into buff
const stdin = process.stdin
stdin.setEncoding('utf8')

let buff = ''
function read() {
  let chunk

  while ((chunk = stdin.read())) {
    buff += chunk
  }
}

stdin.on('readable', read)

stdin.on('end', () => {
  input = buff
})

创建一些应用:

const program = blessed.program()
const screen = blessed.screen({
  program: program,
  smartCSR: true,
})

// Add box with mouse and keys events, etc.

运行程序echo something | node index.js。应用即将关闭。

1 个答案:

答案 0 :(得分:1)

自己找到了解决方案:

const ttyFd = fs.openSync('/dev/tty', 'r+')

  const program = blessed.program({
    input: tty.ReadStream(ttyFd),
    output: tty.WriteStream(ttyFd),
  })

  const screen = blessed.screen({
    program: program,
    smartCSR: true,
  })