gpt4 book ai didi

c++ - chdir() 返回 0,但在 chdir() 调用后的下一行中调试显示目录​​没有改变

转载 作者:行者123 更新时间:2023-11-28 05:49:18 26 4
gpt4 key购买 nike

<分区>

我的代码:

    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 实现不正确,但是我正在这段代码片段中进行调试,应该没有办法 chdir() 稍后会丢失。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com