Как мне прочитать выходные данные дочернего процесса, который записывает в дескриптор файла 3? - PullRequest
1 голос
/ 02 мая 2020

У меня есть программа, которая вызывает сценарий, который выводит информацию о ходе выполнения в виде разделенного переносом строки вывода с префиксом в JSON для файлового дескриптора номер 3:

use std::process::Command;

fn main() {
    let out = Command::new("bash")
        .arg("test.sh")
        .output()
        .expect("failed to execute install command");
}
#!/bin/bash

while sleep 1s; do # random progress emulator
  echo "@progress {\"key\": \"value\"}" >&3
done

Ничего найденный предоставил любой хороший пример того, как на самом деле к этому.

* JavaScript эквивалент будет:

#!/usr/bin/env node

const cp = require('child_process')

const p = cp.spawn('bash', [ 'test.sh' ],  { stdio: [ 'pipe', 'inherit', 'inherit', /* 3 */ 'pipe' ] })

const readline = require('readline')

const rl = readline.createInterface({
  input: p.stdio[3]
})

rl.on('line', (line) => console.log(JSON.parse(line.substr(10))))
...