2017-02-09 19 views
0

Я хотел бы, чтобы не только захватить вывод команды как сКак вернуть статус выхода и вывод системных команд в Racket?

(with-output-to-string (lambda() (system "ls -la"))) 

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

Как это сделать в Racket?

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

ответ

1

Racket предоставляет процедуру system/exit-code, которая похожа на system, но возвращает код выхода вместо индикатора успеха boolean. В противном случае он ведет себя точно так же, как system.

В таком случае, если все, что вам нужно знать, - это то, успешно ли выполнялась команда и не нужен фактический код выхода, system на самом деле достаточно. Как говорится в документации, оно возвращает true, если оно выполнено успешно, а false - в противном случае.

Например:

(with-output-to-string 
    (lambda() 
    (unless (system "ls -la") 
     ;; handle error here 
    ))) 
+0

Это делает много смысла, и он отвечает на мой вопрос уже. Я хотел бы напечатать выходные данные моей команды в случае ошибки (и напечатать что-то по своему усмотрению, когда это удастся), как бы получить результат в форме 'except'? – Zelphir

 Смежные вопросы

  • Нет связанных вопросов^_^