我正在构建自己的 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/