我在用
fid = fopen('fgfg.txt');
Run Code Online (Sandbox Code Playgroud)
打开一个文件.
有时在我设法关闭文件之前发生错误.在关闭Matlab之前,我无法对该文件做任何事情.
如果发生错误,如何关闭文件?
我用这种方式使用Matlab并行计算工具箱:
matlabpool open
parfor …
matlabpool close
Run Code Online (Sandbox Code Playgroud)
如果发生错误parfor,则程序终止,并且matlabpool未关闭.当我修复错误并再次运行它时,matlabpool open失败,因为它已经打开.所以我需要手动关闭它,这是我永远忘记的.理想的方法是将其更改为(伪代码):
matlabpool open
try
parfor …
finally
matlabpool close
end
Run Code Online (Sandbox Code Playgroud)
这有什么最好的做法吗?
我的matlab代码创建了一个新文件,并在其中写入了一些内容.我使用fclose()来释放文件句柄但由于某些原因,当我尝试在程序完成执行后删除创建的文件时,我得到一个正在使用的文件错误.关闭matlab后,可以删除该文件.
问题不是永久性的.我再次尝试了相同的事情,没有任何改变,它的工作原理.
有没有办法知道MATLAB什么时候退出?我想做一些工作,例如,发布一些资源,打印一些日志......我可以在某些类的析构函数中添加一些代码.但由于我们无法确定MATLAB调用析构函数的顺序,我不确定哪一个是最后一个,所以我可以释放资源.
如果存在这样的事件,我们可以将任何回调注册到MATLAB退出事件吗?
可能重复:
如何以异常安全的方式处理MATLAB中的资源?(比如"try ... finally")
如何关闭错误后保持打开的文件?
我通过fopen和创建一些文件和目录mkdir,并fclose在完成文件写入后用适当的命令关闭所有打开的流.然而,当我用Ctrl+ 中止计算时,C这些目录/文件以某种方式保留在内存中,我无法删除它们.即使后续close all调用也没有释放它们,我必须退出Matlab来释放这些文件.知道我怎么能反击这种行为(除了'停止使用中止')?
系统是:Win7 64bit,Matlab R2011b.