我正在尝试学习Common Lisp,并找到了一个简单的网络服务器示例:
#!/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))
我正在使用--script
运行它,所以我可以迭代代码并继续测试。
问题是 - 脚本在启动服务器后立即完成,所以我无法测试它。
在我CTRL+D
/ CTRL+C
之前,我怎样才能使程序继续运行?
我可以使用类似loop
和sleep
的内容,但这样做太麻烦 - 即积极等待。
答案 0 :(得分:5)
如果您愿意使用 Ctrl-D ,则可以使用 - 加载代替 - 脚本来加载文件。加载文件后,您将被放入REPL中,您可以使用 Ctrl-D 退出。
虽然这可能是可行的,但考虑具有可在命令行上覆盖的默认参数的计时器也是有意义的,以便系统在一些到期时间后关闭。否则,您可能会无意中让Web服务器继续运行。