如何从命令行与本地长期运行的 Common Lisp 图像交互,可能是守护进程?
我知道可以从终端命令提示符运行 Common Lisp 函数,我也知道这一点。
我需要做类似的事情,但使用本地的、已经长期运行的Common Lisp 映像,能够从 CLI 或 shell 脚本轮询可用函数。
有没有办法从 CLI 中做到这一点,例如从 bash 脚本调用函数,并接收函数返回的任何内容?
例如,我可以创建一个原始的 Web 服务,可能使用woo或Hunchentoot调用函数并通过curl
or获取返回值wget
,但感觉有点复杂。
当然,这是 Emacs 的 SLIME 的众多特性之一,但我需要仅从 CLI 调用函数,而不调用 Emacs。
有没有办法在 SLIME 之外达到一个时髦的后端?
如果可能的话,这样做的 lisp 惯用方式是什么?
我将不胜感激任何指示。
更新
附加说明
许多年前,我对能够远程登录到长期运行的 LISP 映像很感兴趣(我相信在这种情况下,将名称大写应该没问题)。如果我没记错的话,它可以在 prompt.franz.com 上找到。一篇文章,以某种方式连接:用于远程访问正在运行的应用程序的 telnet
Telnet 当然是相当不安全的,但是无论出于何种原因,能够以这种方式访问 Lisp 应用程序的用处都不能被夸大,至少对某些人来说是这样。
一些额外的指针,谢谢
我要感谢 Basile Starynkevitch 详尽而透彻的回答,尤其是在理论方面。我一直在寻找一个更实用的方向,特别是与 Common Lisp 相关。尽管如此,他的回答还是很有启发性的。
我已经准备好开始编写本地服务器了,或许可以使用其中一个优秀的 Common Lisp 库,例如:
但是,多亏了 Stanislav Kondratyev,我不必这样做。他指出了一个已经存在的解决方案,它很好地回答了我的问题,ScriptL:Shell scripting made Lisp-like
我在 Linux、FreeBSD 和 OS X 上成功地测试了它,只要确保首先在 POSIX 系统调用上安装瘦包装器。在众多功能中(参见 README),它允许仅展示选定的功能,安全性得到妥善处理,甚至提供自定义 C 客户端,作为 ASDF 加载操作的一部分构建,并支持许多新功能,例如I/O,代替netcat
.