現在の環境の「スナップショット」を保存しておきたいので、後でそれを取り乱しても問題なく再生できます。 (本質的にサンドボックスを作成する)環境を終了せずにCLイメージを保存する
私は(save-lisp-and-die "sbcl.core")
で画像を保存できることを知っています。私はまた、sbcl --core sbcl.core
で画像をロードできることも知っています。
問題は、1秒間でも停止する余裕がないスレッドを実行していて、このコマンドが終了すると、sbcl
です。
私の質問は環境を終了することなくイメージを作成できますか?私は何かのようなものを探しています(save-lisp "sbcl.core")
それを行うためのポータブルな方法があれば - それは素晴らしいでしょう。そうでない場合 - 私はSBCLのソリューションに興味があります。残念ながら、それがスレッドを実行していると動作しない場合があります
(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)))
:
一般的に、ほとんどの実装では、すべてのスレッドを停止し、イメージを保存している間にLispシステムが応答しなくなることが予想されます。新しいシステムではそれほど時間がかかりません。たとえば、LispWorksは「セッション」を保存できます。そのため、すべてのスレッドを停止し、ユーザーインターフェイス/ IDEを閉じ、セッションを保存してからIDEを再起動します。イメージを残すことはありませんが、マルチプロセッシングとIDEは再開されます。 –