mycode的:
int ushExCd(Cmd cmd){ // BuiltIn shell command implementation
char * home = "HOME";
int returnVal = 1;
if(cmd->nargs > 1){ // target directory is specified in args[1]
returnVal = chdir(cmd->args[1]);
}else{ // target directory is not specified, use "HOME" instead
returnVal = chdir(getenv(home));
}
if(-1 == returnVal){
perror("cd");
}
return 1;
}
使用llvm调试器在分配后立即检查returnVal
,显示其值为0(尽管初始化为1),但在p (char*)getenv("PWD")
之后立即在调试器中执行chdir()
系统调用显示目录未更改。
我正在使用Xcode,但之后我尝试使用bash shell,使用gcc编译器的tcsh没有用。
更有趣的是,同一块代码在另一个人实现的shell上成功运行,这可能表明shell实现不正确,但是我正在调试这个代码片段中,并且应该没有办法{ {1}}在以后的某个时间点迷路了。
答案 0 :(得分:1)
我认为getenv("PWD")
会在程序启动时为您提供当前目录。
要了解当前目录,请使用getcwd()
。