【发布时间】:2021-10-04 19:43:43
【问题描述】:
我正在使用 C 语言制作自己的 shell。
在初始阶段,我的 cwd 是“/Users/Henry/test”。
其中一个功能是当我打开一个文件时,shell 不应该在当前工作文件夹 (cwd) 中搜索该文件。
相反,它应该在文件夹“/usr”中搜索,然后在“/usr/bin”中搜索。我的代码:
int commandHandler(char** parsed)
{
chdir("/usr");
int ret;
ret = chdir(parsed[1]);
if(ret != 0)
chdir("/usr/bin");
ret = chdir(parsed[1]);
return 0;
}
这会将我当前的工作目录更改为“/usr/bin”。
此功能仅适用于“cd”命令。其他命令如“ls”、文件执行./out 等应使用实际工作目录“/Users/Henry/test”。
如何更改我的目录?我可以在程序初始化时使用目录名称设置一个全局变量,然后在我想改回 cwd 时调用它吗?
【问题讨论】:
-
是的,你可以这样做。
-
您是否尝试在
chdir调用之前使用getcwd(...)函数获取CWD?只需记住chdir并保存值 -
或者将其存储在当前函数上下文中声明的缓冲区中。如果堆栈便宜,则应尽可能避免使用全局变量。