Как сделать обработку ошибок с трубами подпроцесса

Если вы зарегистрируете

var options = {
  key: fs.readFileSync('./key.pem', 'utf8'),
  cert: fs.readFileSync('./csr.pem', 'utf8')
};

, вы можете заметить, что из-за неправильного кодирования есть недопустимые символы.

0
задан Daniel Crisp 16 January 2019 в 18:21
поделиться

1 ответ

stdout и stderr - это не строки, а потоки. Один из способов думать о них, как о резервуаре для воды: процесс сбрасывает воду в верхнюю часть, и у вас есть кран внизу, к которому вы можете получить доступ. stdout.read() говорит: «откройте кран и дайте ему поработать, пока в баке больше не останется воды» - если вы не поставили ведро под кран (назначая переменную в этой аналогии), вода исчезнет, ​​и открытие крана из пустого резервуара снова не вернет его.

Если вам нужно обращаться к одному и тому же выходу из потока несколько раз, вам нужно сохранить его в переменной, а затем ссылаться на эту переменную каждый раз. В вашем случае вы можете сделать что-то вроде:

output = proc.stdout.read()
if not output:
    # your error handling here
for line in output.split("\n"):
    # do stuff with line here
0
ответ дан Craig Meier 16 January 2019 в 18:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: