如何return退出Racket中系统命令的状态和输出?

How to return exit status and output of system commands in Racket?

我不仅想捕获像 with

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

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

如何在 Racket 中执行此操作?

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

Racket 提供了一个 system/exit-code 过程,类似于 system 但 returns 退出代码而不是布尔成功指示符。它在其他方面的行为与 system.

完全相同

这么说,如果你只需要知道命令运行是否成功,而不需要实际的退出代码本身,system其实就足够了。如文档所述,如果成功则 returns 为真,否则为假。

例如:

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