我开始使用SBCL Common Lisp并希望使用Hunchentoot开发一个小型Web应用程序。为了便于部署,我计划使用sb-ext保存所有内容:save-lisp-and-die,因为我可以使用大输出大小。
对于可执行文件,您需要提供顶级函数。问题是当顶级函数返回时程序退出。我尝试从可执行文件启动Hunchentoot,但程序在两秒后结束。
在停止程序之前,我怎么能等到Hunchentoot关闭(从请求内部)?我可以加入Hunchentoot接受器线程吗?或者我甚至可以将REPL包含在可执行文件中以便能够进行实时调试?
答案 0 :(得分:4)
(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屏幕),则无需显式代码即可访问REPL。将Ctrl + C发送到终端以进入调试器。