2017-01-05 3 views
1

現在の環境の「スナップショット」を保存しておきたいので、後でそれを取り乱しても問題なく再生できます。 (本質的にサンドボックスを作成する)環境を終了せずに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))) 

+0

一般的に、ほとんどの実装では、すべてのスレッドを停止し、イメージを保存している間にLispシステムが応答しなくなることが予想されます。新しいシステムではそれほど時間がかかりません。たとえば、LispWorksは「セッション」を保存できます。そのため、すべてのスレッドを停止し、ユーザーインターフェイス/ IDEを閉じ、セッションを保存してからIDEを再起動します。イメージを残すことはありませんが、マルチプロセッシングとIDEは再開されます。 –

答えて

3

SBCL core savingSBCL manual's adviceに基づいて、以下の機能を提供します。

+0

なぜ "このlispで利用できない"というエラーですか?私はいくつかの他のリスプでsave-applicationを使用しています。 – kennytilton

関連する問題