繁体   English   中英

TIFFOpen:打开的文件太多

[英]TIFFOpen: Too many open files

我正在尝试从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

我仍然收到相同的错误。 这是怎么回事?

您代码的问题正盯着我们!

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

重命名您的函数,一切都会很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM