我开始使用SBCL Common Lisp,并且希望使用Hunchentoot开发一个小型Web应用程序。为了便于部署,我计划使用sb-ext:save-lisp-die将所有内容保存为二进制文件,因为我可以承受较大的输出大小。
对于可执行文件,您需要提供一个顶层函数。问题是当顶级函数返回时程序退出。我试图从可执行文件启动Hunchentoot,但是该程序在两秒钟后结束。
在停止程序之前,如何等待Hunchentoot(在请求中)关闭?我可以做些类似加入Hunchentoot受体线程的事情吗?或者甚至可以将REPL包含到可执行文件中以进行实时调试?
最佳答案
(ql:quickload :hunchentoot)
(use-package :hunchentoot)
(defun main ()
(hunchentoot:start-server :port 8082)
(sb-thread:join-thread (find-if
(lambda (th)
(string= (sb-thread:thread-name th) "hunchentoot-listener-1"))
(sb-thread:list-all-threads))))
如果您保持终端处于打开状态(例如通过GNU Screen),则不需要显式代码即可访问REPL。将Ctrl + C发送到终端以进入调试器。
关于common-lisp - SBCL:将Hunchentoot应用程序部署为可执行文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30422451/