fopen错误 - 工作一段时间,但然后给出错误

时间:2014-07-07 18:06:01

标签: matlab fopen

我有一个运行一系列for循环的脚本,在这些for循环中创建一个文件,然后使用script命令使用外部程序运行该文件。总之,它看起来像这样:

for i=1:n1
  for j=1:n2
    for k=1:n3
      fid=fopen('file.txt','w');
      fprintf(fid,'Some commands to pass to external program depending on i j k');
      fclose(fid);
      system('program file.txt');
    end
  end
end

该脚本总共有大约500k个案例(n1xn2xn3),并且在一个小场景(大约100次运行)中运行正常,但是对于整个脚本它运行了一段时间然后返回错误,没有明显的原因,给出了这个错误:

fopen无效的文件标识符对象

这没有明显的原因,我想知道是否有人可以指出什么是错的?

1 个答案:

答案 0 :(得分:2)

只是猜测:你的外部程序的一个实例正在读取file.txt,同时你的嵌套循环的下一次迭代想要打开file.txt进行写入。外部程序的实例越多,同时运行,机器越慢,这种情况就越可能发生。 (称为“竞争条件”)

可能的解决方案:每个案例使用一个单独的文本文件,并使用唯一的文件名

您还应该考虑使用其他方法来调用外部函数,因为500k案例的文件处理应该非常慢。

希望有所帮助, 利