c - 如何检查文件是否在特定目录或其子目录中 C

标签 c subdirectory

我正在构建自己的 shell,我想知道:我如何知道命令是否位于目录“/bin”及其子目录中。 我想实现一个函数 char* path_to_command(char* commandname) ,它返回参数中给定命令的路径。

我一直在寻找确定特定文件是否在目录中的函数(如 fopen 或 access)。但是这些函数只是告诉我们文件是否只在目录中。 我正在考虑使用 fopen 的递归函数,我将不得不在其中使用 strcat 很多时间。 我相信有更好的解决方案。

英语不是我的母语,如果有错误,我很抱歉。 谢谢。

最佳答案

不要自己写递归函数,最好使用标准nftw :

NAME

nftw - walk a file tree

SYNOPSIS

#include <ftw.h>

int nftw(const char *path, int (*fn)(const char *,
         const struct stat *, int, struct FTW *), int fd_limit, int flags);

DESCRIPTION

The nftw() function shall recursively descend the directory hierarchy rooted in path.

但是,对于一个标准的 shell 来说,不需要递归搜索(最糟糕的是,这对任何用户来说都是非常奇怪的),你只需要在 PATH 环境变量中提到的目录中搜索。

关于c - 如何检查文件是否在特定目录或其子目录中 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53935170/

相关文章:

java - 将目录和子目录中的特定文件复制到 mac 中的目标文件夹中

bash - 重命名子文件夹中的所有文件 - 替换文件名中的字符串

amazon-s3 - 使用 AWS SDK 时,为什么 S3 用户策略的条件策略语句中使用双引号 (") be parsed as (\")?

c - 如何根据用户给出的数字打印包含文本的金字塔?

android - 需要帮助编译适用于 Android 的 mkbootimg 二进制文件

java - URI 没有层次结构。如何使用 getResourceAsStream 获取文件路径

Git忽略目录中除子文件夹之外的所有内容

c - 接收方的延迟 ACK 与发送方的 RTO

c - 如何将 char/int 添加到 C 中的 char 数组?

c - 得到 C 错误 : conversion to non-scalar type requested