我正在尝试从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
我仍然收到同样的错误。发生了什么事?
答案 0 :(得分:3)
您的代码出现问题,我们正好盯着我们!
你看到你写的那个函数叫read()
?是的,那不好。它以相同的名称与标准库的功能冲突(尽管参数不同)。因此它最终被libtiff调用 - 而不是从文件中获取数据,它会以递归方式打开,直到程序无法再打开文件,因此libtiff会停止尝试读取。
重命名你的功能,一切都会好的。