【发布时间】:2014-10-31 00:04:45
【问题描述】:
应用程序交付的所有基本示例都展示了如何用您自己的函数替换顶层函数。一旦该功能完成,应用程序就会退出。我想知道为长时间运行的应用程序创建顶级函数的最佳方法是什么。我的代码是
(ql:quickload :my-app)
(defun main ()
(swank:create-server :dont-close t)
(my-app:start-server) ; Essentially creates a hunchentoot handler and returns
(loop for x = (read-line)
when (string= x "q") do (quit)
do (format t "Type q to quit~%" x)))
(save-application "my-app" :toplevel-function #'main :prepend-kernel t)
有没有更好的方法?我不喜欢循环,但释放终端的东西也可以。
【问题讨论】:
-
释放终端必然是平台(OS)特定的。您在哪个平台上运行您的应用程序?另外,请澄清您对“更好的方式”的定义。在您看来,最佳的 main 函数会做什么?
-
“更好的方式”我猜是主观的。我真正的意思是惯用/最佳实践,甚至是改进代码的建议。是否有必要有一个循环来执行阻塞读取行,或者有没有其他方法不退出?我正在 OSX 上开发,不确定终端是否会释放。
标签: common-lisp ccl toplevel