BSD 上的 nftw 不同吗?

发布于 2024-12-15 08:56:41 字数 426 浏览 6 评论 0原文

我正在尝试使用 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 上它会因不拾取任何文件而失败。我缺少什么?

I'm trying to get all .c files in a directory tree using nftw with the following code:

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);
}

It works on Linux and Solaris, but on PC-BSD it fails by simply not picking up any files. What am I missing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无畏 2024-12-22 08:56:41

nftw的返回值是多少?如果为 -1 并且 errno 设置为 EINVAL,则很可能超出了 OPEN_MAX 的值>。尝试将较小的值作为第三个参数传递给 nftw 并确保它小于 OPEN_MAX

What is the return value of nftw? If it's -1 and the errno is set to EINVAL it's quite likely that you're exceeding the value of OPEN_MAX. Try passing a smaller value as third parameter to nftw and ensure it's smaller than OPEN_MAX.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文