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. 尝试将较小的值作为第三个参数传递给nftw并确保它小于OPEN_MAX.

于 2011-11-13T19:07:07.790 回答