我正在尝试学习Common Lisp,并找到了一个简单的webserver示例:
#!/usr/local/bin/sbcl --script
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
(user-homedir-pathname))))
(when (probe-file quicklisp-init)
(load quicklisp-init)))
(ql:quickload "cl-who")
(ql:quickload "hunchentoot")
(ql:quickload "parenscript")
(defpackage :vote
(:use :cl :cl-who :hunchentoot :parenscript))
(in-package :vote)
(hunchentoot:start (make-instance 'hunchentoot:easy-acceptor :port 8080))
(hunchentoot:define-easy-handler (say-yo :uri "/yo") (name)
(setf (hunchentoot:content-type*) "text/plain")
(format nil "Hey~@[ ~A~]!" name))
Run Code Online (Sandbox Code Playgroud)
我正在运行它,--script所以我可以迭代代码并继续测试它.
问题是 - 脚本在启动服务器后立即完成,所以我无法测试它.
我怎么能让程序继续运行直到我CTRL+D/ CTRL+C它?
我可以使用类似loop和sleep,但它是太麻烦了-即,积极的等待.
如果您愿意使用Ctrl-D,可以使用--load而不是--script来加载文件.加载文件后,您将被放入REPL,您可以Ctrl-D从中退出.
虽然这可能是可行的,但考虑具有可在命令行上覆盖的默认参数的计时器也是有意义的,以便系统在一些到期时间后关闭.否则,您可能会无意中让Web服务器运行.