保存CL图像而不退出环境

时间:2017-01-05 12:32:55

标签: common-lisp sbcl

我想保存当前环境的“快照”,这样我以后就可以玩它而不会弄乱它。 (基本上创建一个沙箱)

我知道我可以使用(save-lisp-and-die "sbcl.core")保存图片。我也知道我可以使用sbcl --core sbcl.core加载图片。

问题是我运行了一些线程,即使一秒钟也停不下来,这个命令会退出sbcl

我的问题是:我可以在不退出环境的情况下创建图片吗?我正在寻找类似(save-lisp "sbcl.core")

的内容

如果有一种可移植的方式,那就太好了。如果没有 - 我对SBCL的解决方案感兴趣。

1 个答案:

答案 0 :(得分:3)

SBCL core saving根据SBCL manual's advice提供以下功能:

(defun save-core (core-fn)
  (progn
    #+sbcl
    (let ((fork-result (sb-posix:fork)))
      (case fork-result
        (-1 (error "fork failed"))
        (0 (sb-ext:save-lisp-and-die core-fn :toplevel #'main :executable t))
        (otherwise (sb-posix:wait)))
      (format t "stand-alone core ~a saved" core-fn))
    #-sbcl
    (error "not available on this lisp")
    (values)))

不幸的是,它可能不适用于运行线程。