Как читать STDIN и запускать приложение благословенного терминала? - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю приложение 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 голосов
/ 02 ноября 2018

Сам нашел решение:

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,
  })
...