1

nftw次のコードを使用して、ディレクトリ ツリー内のすべての .c ファイルを取得しようとしています。

static int gf(const char *path, const struct stat *st, int t, struct FTW *ftw) {
    if (t != FTW_F)
        return 0;
    if (strcmp(ext(path), ".c") == 0)
        addl(&files, dup(abspath(path)));
    return 0;
}

void getfiles(char *path) {
    nftw(path, gf, 255, FTW_PHYS);
}

Linux と Solaris では動作しますが、PC-BSD では単にファイルを取得しないために失敗します。私は何が欠けていますか?

4

1 に答える 1

1

の戻り値はnftw? それが で-1あり、それにerrno is設定されEINVALている場合は、 の値を超えている可能性が非常に高いですOPEN_MAX。3 番目のパラメーターとして小さい値を渡してみて、それnftwよりも小さいことを確認してくださいOPEN_MAX

于 2011-11-13T19:07:07.790 に答える