首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保证干净地退出sbcl

如何保证干净地退出sbcl
EN

Stack Overflow用户
提问于 2012-12-21 10:21:34
回答 1查看 2.7K关注 0票数 6

我通过一个sbcl脚本调用我的common-lisp程序,该脚本使用必要的参数调用sbcl,并且我必须保证实际的程序完成调用后会干净地结束一些/没有输出。

我目前的解决方案如下所示:

代码语言:javascript
复制
sbcl --eval "(unwind-protect 
               (handler-case 
                   (progn 
                      (declaim #+sbcl(sb-ext:muffle-conditions style-warning))
                      (let ((*standard-output* (make-broadcast-stream)))
                        (ql:quickload \"module\"))
                   (eval (read-from-string \"(package:start)\"))) ;this starts the program
                  (error (err) 
                                (FORMAT t \"Something went really wrong:~a~%\" err) 
                                (sb-ext:exit))) 
              (sb-ext:exit))"

但在下面的两个例子中,它不会起作用:

代码语言:javascript
复制
sbcl --eval "(unwind-protect 
                 (handler-case 
                    (progn 
                       (define-condition bad () ())
                       (error 'bad)) 
                   (error (err) 
                                 (FORMAT t \"Something went really wrong:~a~%\" err) 
                                 (sb-ext:exit))) 
                 (sb-ext:exit))"

sbcl --eval "(unwind-protect 
                 (handler-case 
                     (progn 
                       (labels ((rek () (rek)))
                         (rek)))
                   (error (err) 
                                 (FORMAT t \"Something went really wrong:~a~%\" err) 
                                 (sb-ext:exit))) 
               (sb-ext:exit))"

我现在想知道是否有另一种解决方案可以捕获被调用程序的任何可能的结果,并确保sbcl调用将干净退出?

对于第一种情况,一般的catch没有指定要捕获的内容,可能会完成交易。第二个场景必须能够处理bug/错误,这将导致调用低级调试器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-21 11:01:09

--non-interactive开关将确保SBCL永远不会进入调试器或REPL。这类似于传递--disable-debugger并使用--eval "(sb-ext:quit)"。如果您不希望sb-ext:*invoke-debugger-hook*在发生错误时打印回溯,您还可以自定义它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13983447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档