0

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.

2 番目のメッセージが数百回繰り返されます。

won't open

その後数百回表示されます。

read() が 1 回呼び出されているのに、なぜ 700 個の奇数のプリントが得られるのですか?

私はDebianを実行しています、私はチェックしました

lsof | grep ASTGTM2_N50E002_dem.tif

誰もこのファイルを開いていません。

ここの提案にも従いました: https://stackoverflow.com/a/9012019/1877851

私はまだ同じエラーを受け取ります。どうしたの?

4

1 に答える 1

3

あなたのコードの問題は、私たちを真正面から見つめていることでした!

あなたが書いた関数が呼び出されたのがわかりますread()か?ええ、それは良くありません。同じ名前で標準ライブラリの関数と衝突します(パラメータは異なりますが)。そのため、libtiffによって呼び出されることになります。ファイルからデータを取得する代わりに、プログラムがファイルを開くことができなくなるまで、再帰的に永久に開きます。そのため、libtiffは読み取りを停止します。

関数の名前を変更すると、すべてうまくいきます。

于 2013-03-08T04:23:40.400 に答える