[英]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.