所以我正在尝试使用 C/C++ 在 Ubuntu 中创建一个命令行解释器这是我们大学实验室任务的一部分 CLI 的基本功能是从用户那里获取输入,解析它以找到命令及其参数,然后从环境变量中查找命令的路径名
我已经能够解析字符串,获取命令及其参数,我还能够读取路径环境变量以获取所有路径的目录。现在我必须查看这些目录以找到文件(命令)所在的位置,然后返回完整路径,以便将其发送到 execve 以便在子进程中执行我必须创建一个查找函数,该函数采用参数数组(第 0 个索引位置包含命令名称)和目录数组这是提供给我们的功能的概述
// Search the directories identified by the dir argument to see
// if the argv[0] (the filename) appears there. Allocate a new
// string, place the full path name in it, then return the string.
//
char* lookupPath(char **argv, char **dir){
char* result;
char pName[MAX_PATH_LEN];
// check if is already an absolute path name
if( *argv[0] == '/' ) .....
// look in PATH directories, use access() to see if the
// file is in the dir
for( i = 0 ; i < MAX_PATHS ; i++ ) .....
// File name not found in any path variable
fprintf(stderr, "%s: command not found\n", argv[0]);
return NULL;
}
这里 argv 是参数数组(第 0 个索引包含命令,以下索引包含参数), dir[] 包含所有目录的数组
现在我想如何遍历目录以找到 give 命令的完整路径?