Saved-states are just a special case of PO files. The
save_program/[1,2]
predicate will save the execution state in a
file. The state consists of all predicates and modules except built-in
predicates and clauses of volatile predicates, the current operator
declarations, the current character-conversion mapping, the values of
all writable Prolog flags except those marked as volatile in
ref-lps-flg, any blackboard data (see ref-mdb-bbd), database
data (see ref-mdb-bas), and as of release 4.2, information for
source-linked debugging.
A saved-state, can be restored using the restore/1
predicate from within Prolog:
| ?- restore(File).
which will replace the current program state by the one in File.
A saved-state can also be given as an option to the sicstus command:
% sicstus -r File
which will start execution by restoring File.
The location (i.e. directory) of the saved-state, when it is created
with save_program/[1,2]
and loaded with restore/1
, is
treated in a special way in order to make it possible locate files when
the saved-state has been moved. See Saving for more information.
The save_program/2
predicate can be used to specify an initial goal
that will be run when the saved-state is restored. For example:
| ?- save_program(saved_state,initial_goal([a,b,c])).
When saved_state is loaded initial_goal/1
will be called. This allows
saved-states to be generated that will immediately start running the user's
program when they are restored. In addition to this save_program/2
facility, see also the initialization/1
facility to declare
goal to be executed upon loading (see Initializations).