我在Matlab中编写了一个应用程序(它是一个独立的应用程序),需要全天候运行。如果发生了什么事情并且它崩溃了,我有一个python脚本重新打开Matlab程序。我总是在MySQL数据库上保存一些最重要的数据,所以每当它重新打开时,我都可以从数据库中获取一些数据并重新初始化它们。但是,我需要程序重新启动它停止的地方。最好的方法是什么?
基本上是这样的:
function [] = main() {
obj1.function1()
obj1.function2()
% if it stops in the middle of obj.function1()....
% How can I resume the program exactly RIGHT HERE?
obj2.function1()
}
答案 0 :(得分:0)
要让Matlab在启动时运行某些内容,请在Matlab主目录中的startup.m
文件中添加一行。如果main
位于同一文件夹中,则可以使其像
main();
那么问题是如何从{I}停止的地方恢复main
。一种选择是保存一个临时文件,跟踪您的位置,并在main
每次启动时重新加载该临时文件:
function main
try
savefile = load('status.mat');
status = savefile.status;
catch
status = zeros(2, 1);
end
objs = {obj1, obj2};
startObj = find(status == 0, 'first', 1);
for iO = startObj:length(objs)
iObj = objs{iO};
iObj.function1();
status(1) = 1;
save('status.mat', 'status')
end
上述代码显然尚未经过测试且具有说明性。