如何在Common Lisp中可移植地以指定错误码退出进程?
在Common Lisp中可移植地退出进程并返回指定退出码
要实现类似Python os.exit(15) 的可移植退出功能,最便捷的方式是使用UIOP库——它是ASDF的核心组件,几乎所有现代Common Lisp实现(如SBCL、CCL、CLISP等)都默认自带,无需额外安装,兼容性和bordeaux-threads处于同一层级。
直接调用uiop:quit函数并传入退出码即可:
(uiop:quit 15)
如果不想依赖ASDF/UIOP,也可以自己封装一个针对不同实现的条件化函数,手动适配各Lisp实现的退出接口:
(defun exit-with-code (code) #+sbcl (sb-ext:exit :code code) #+ccl (ccl:quit code) #+clisp (ext:quit code) #+allegro (excl:exit code) #+lispworks (lw:quit :status code) ;; 对不支持指定退出码的实现提供降级方案 #-(or sbcl ccl clisp allegro lispworks) (quit))
调用自定义函数的方式:
(exit-with-code 15)
相比自定义封装,更推荐UIOP方案——它已经维护了全平台/全实现的兼容性,无需你自己跟进各实现的API变更。
内容的提问来源于stack exchange,提问作者djhaskin987
相关产品推荐
相关产品推荐

