在不退出环境的情况下保存 CL 映像
Save a CL image without exiting the environment
我想保存当前环境的 "snapshot",这样我以后就可以使用它,而不用担心弄乱它。 (本质上是创建一个沙箱)
我知道我可以用 (save-lisp-and-die "sbcl.core")
保存图像。我也知道我可以用 sbcl --core sbcl.core
.
加载图像
问题是我有 运行 个线程,我不能停止甚至一秒钟,这个命令将退出 sbcl
。
我的问题是:我可以在不退出环境的情况下创建图像吗?我正在寻找类似 (save-lisp "sbcl.core")
的东西
如果有一种便携的方式来做到这一点 - 那就太好了。如果没有 - 我对 SBCL 的解决方案感兴趣。
SBCL core saving gives the following function, based on 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)))
不幸的是,它可能不适用于 运行 个线程。
我想保存当前环境的 "snapshot",这样我以后就可以使用它,而不用担心弄乱它。 (本质上是创建一个沙箱)
我知道我可以用 (save-lisp-and-die "sbcl.core")
保存图像。我也知道我可以用 sbcl --core sbcl.core
.
问题是我有 运行 个线程,我不能停止甚至一秒钟,这个命令将退出 sbcl
。
我的问题是:我可以在不退出环境的情况下创建图像吗?我正在寻找类似 (save-lisp "sbcl.core")
如果有一种便携的方式来做到这一点 - 那就太好了。如果没有 - 我对 SBCL 的解决方案感兴趣。
SBCL core saving gives the following function, based on 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)))
不幸的是,它可能不适用于 运行 个线程。