2014-07-07 55 views
0

我有正在運行的一系列循環的腳本,並在這些for循環的文件被創建,然後運行使用使用腳本命令的外部程序。總之,它看起來是這樣的:的fopen錯誤 - 工作了一段時間,但隨後給出錯誤

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 

劇本總共有大約50萬例(n1xn2xn3),並運行良好的一個小場景(約100次),但對於整個腳本運行了一段時間,然後返回一個錯誤,沒有明顯的理由,給這個錯誤:

的fopen無效文件標識符對象

沒有明顯的原因,和我想知道如果有人能指出什麼是錯的?

回答

2

只是一個猜測:您的外部程序的一個實例是閱讀file.txt的,並在同一時間你的嵌套循環的下一次迭代要打開file.txt的寫作。您的外部程序同時運行的實例越多,機器越慢,這種情況就越有可能發生。 (稱爲「競態條件」)

此問題的可能解決辦法:用每箱一個單獨的文本文件,唯一的文件名

你也應該考慮使用其他的方法來調用外部函數,因爲文件處理爲500K案件應該非常緩慢。

希望有幫助, Eli

相關問題