Как получить код выхода из файла, запущенного с помощью javascript child_process.execFile - PullRequest
0 голосов
/ 04 мая 2019

Вот мой код Python:

#!/bin/python
import sys
sys.exit(4)

Вот мой JavaScript

var exec = require('child_process').execFile
exec('./script.py', (err, data) => { if(err) { console.log(err.status) } })

Но это не работает, потому что нет такого понятия, как err.status то, что я хочу иметь в журналах консоли, это '4'.

Ответы [ 2 ]

2 голосов
/ 04 мая 2019

Нет err.status, но есть err.code.

Это должно работать:

var exec = require('child_process').execFile
exec('./script.py', (err, data) => { if(err) { console.log(err.code) } })

Существует также err.signal и err.killed

Из документов nodejs:

В случае успеха ошибка будет нулевой. В случае ошибки ошибка будет Ошибка. Свойство error.code будет кодом выхода ребенка обработайте, пока error.signal будет установлен на сигнал, который завершился процесс. Любой код выхода, отличный от 0, считается ошибкой.

(https://nodejs.org/api/child_process.html#child_process_child_process_execfile_file_args_options_callback)

1 голос
/ 04 мая 2019
Обратный вызов

execFile получает 3 аргумента:

  • error, если он был.
  • stdout, стандартный вывод процесса.
  • stderr, stderr процесса.

Итак, проверив stderr, вы сможете достичь ожидаемого результата:

var exec = require('child_process').execFile
exec('./script.py',(err,stdout,stderr)=>{console.log(stderr)})

Смотрите этов документах Node.js

...