如何在Racket中返回退出状态和系统命令输出?

时间:2017-02-09 00:14:51

标签: process command subprocess racket exit-code

我不仅要捕获与

一样的命令输出
(with-output-to-string (lambda () (system "ls -la")))

但是也希望能够访问退出代码,这样我就不必解析输出来知道命令是否成功,并且可以相应地对它做出反应。

如何在Racket中执行此操作?

我找到了关于subprocess的文档,但我不知道如何提供标准输出等所有参数。我想看一些全面的例子,如果命令成功则使用输出,如果命令不成功,应该对退出代码有一些反应。

1 个答案:

答案 0 :(得分:1)

Racket提供system/exit-code过程,类似于system,但返回退出代码而不是布尔成功指示符。它的行为与system完全相同。

如上所述,如果你需要知道的是命令是否成功运行,并且不需要实际的退出代码本身,system实际上就足够了。正如文档所述,如果成功则返回true,否则返回false。

例如:

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