TIFFOpen:打开的文件过多

时间:2013-03-07 03:25:59

标签: linux libtiff geotiff

我正在尝试从ASTER数据集中打开geotiff,但它给出了一个我无法弄清楚的错误。这是我的代码:

#include "stdlib.h"
#include "stdio.h"
#include "tiffio.h"

void read(void);

void main() {
    read();
    return;
}

void read(void) {
    TIFF* file;

    file = TIFFOpen("./ASTGTM2_N50E002_dem.tif", "r");
    if (file != NULL)
        TIFFClose(file);
    else
        printf( "won't open\n" );
    return;
}

我正在编译:

gcc parse.c -ltiff -lm;

这是我得到的输出的一部分:

TIFFOpen: ./ASTGTM2_N50E002_dem.tif: Too many open files.
./ASTGTM2_N50E002_dem.tif: Cannot read TIFF header.

第二条消息重复几百次,然后

won't open
之后

显示几百次。

read()被调用一次,为什么我会得到700多张打印?

我正在运行Debian,我检查了

lsof | grep ASTGTM2_N50E002_dem.tif

并且没有人打开此文件。

我也遵循了这里的建议:https://stackoverflow.com/a/9012019/1877851

我仍然收到同样的错误。发生了什么事?

1 个答案:

答案 0 :(得分:3)

您的代码出现问题,我们正好盯着我们!

你看到你写的那个函数叫read()?是的,那不好。它以相同的名称与标准库的功能冲突(尽管参数不同)。因此它最终被libtiff调用 - 而不是从文件中获取数据,它会以递归方式打开,直到程序无法再打开文件,因此libtiff会停止尝试读取。

重命名你的功能,一切都会好的。