簡體   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