在 Chicken Scheme 中 运行 系统命令的最佳方式

Best way to run a system command in Chicken Scheme

我想 运行 按照 Linux 命令打开文档,应用程序已在系统中注册:

xdg-open mydocument.pdf

我看到有很多命令可用:运行、运行*、capture、shell、execute、system* 等。

来自:http://wiki.call-cc.org/eggref/4/shell and https://wiki.call-cc.org/man/4/Unit%20utils

我还需要命令的结果(运行 成功与否)。

以下(没有 * 的系统)虽然没有列出,但似乎也运行良好:

(define result (system "xdg-open mydocument.pdf"))

以上哪种方式最安全 运行 系统命令?

如果文档的名称是硬编码的,那么使用什么并不重要。如果文件名是用户提供的,如果您依赖基于字符串的 API(例如 system),则必须使用 qs 来引用参数。使用 process.

单独传递参数可能更容易

我不太了解 shell egg,但是如果您想真正喜欢 shell 调用,scsh-process egg 是一个非常好的选择(完全披露: 我是它的作者)。