【问题标题】:Why do I get a "Too many open files" error message, when trying to save images in MATLAB尝试在 MATLAB 中保存图像时,为什么会收到“打开的文件过多”错误消息
【发布时间】:2011-09-19 16:05:40
【问题描述】:

我有一个for 循环,它在每次迭代时使用saveas(gcf,[%link,'.jpg']) 保存图像。它在开始时运行良好,但崩溃并显示如下错误消息:

???在 339 处使用 ==> 打印时出错无法创建输出文件 '/20110301/20110301225100.jpg'

==> 保存为 155 时出错

==> TSI_forecast_display_cloud_decision 中的错误 153 java.io.FileNotFoundException: /home/cwchow/.matlab/R2010a/matlab.prf (Too many open files) at java.io.FileOutputStream.open(Native Method) at java .io.FileOutputStream.(Unknown Source) at java.io.FileOutputStream.(Unknown Source) at com.mathworks.services.Prefs.save(Prefs.java:295) at com.mathworks.services.Prefs$SavePrefsThread.run( Prefs.java:702)

如果我使用print,我会得到类似的结果。我猜 MATLAB 没有正确关闭文件,导致打开的文件太多。谁能告诉我如何避免这个错误?

更新:

我尝试了图形句柄和fclose('all')。我什至使用了close all,它们不起作用。我仍然得到同样的错误。我检查了系统限制,已经是1024了。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    据称将在即将发布的 2011b 版中修复的一个错误如下:

    说明:在某些 Linux 系统上, 基于 Linux 操作系统描述符 限制,正常使用 MATLAB 可能 触发以下错误:

    Too many files open.
    Unexpected error status flag encountered. Resetting to proper
    

    状态。虽然某些 GUI 可能会继续 工作,MATLAB命令行将 一贯错误。解决方法:检查 Linux OS 使用限制的限制 Linux shell 中的命令:

    [主机名:/home/lusername]1 % 限制 描述符 如果描述符限制 设置为小于 1024,重置 描述符限制为 1024。这将 依赖于外壳。在 tcsh 中,使用 启动文件中的这个命令(比如 .cshrc) 将是合适的:限制 描述符 1024

    【讨论】:

      【解决方案2】:

      尝试在saveas 之后调用fclose('all')(假设您没有其他打开的文件句柄),以确保saveas 正确关闭文件句柄。

      【讨论】:

        【解决方案3】:

        听起来您并没有在保存每个文件后关闭它。在 Java 中,您将在完成后调用 close()。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-06-30
          • 2013-05-25
          • 1970-01-01
          • 2019-12-03
          相关资源
          最近更新 更多