【发布时间】:2018-02-21 12:29:20
【问题描述】:
您好,我正在编写一个 C 程序,我是新手,我使用 system 来运行命令,但每当我输入 cd.. 时,它会显示正确的目录,但它总是留在那里。
int main(){
char command[20];
while(1){
scanf("%s", &command); //typing in cd..
//it returns "C:\Program Files (x86)\Google\Drive\"
system(command);
}
}
我再次输入相同的内容,它似乎仍然在同一个目录中。如何使用 system 更改 C 中的目录?
【问题讨论】:
-
每个人都使用
system而不是正确的调用,这是怎么回事?man chdir -
嗯,有趣的是,没有办法用系统做到这一点吗?我会检查链接谢谢@spectras
-
只是
system是一个hack,任何严肃的程序都不应该像以前那样使用它。它产生一个或多个外部进程,初始化它们,让它们解析命令并运行它,然后等待操作系统清理它们,所有这些都是繁重的操作,而您的程序可以完美地完成这项工作,快速有效地只需直接使用您启动的程序最终执行的实际调用。更不用说它本质上不是跨平台的(取决于可用的命令)并且可能很容易行为不端(如果我在您的程序旁边以名称cd.exe复制病毒怎么办?) -
在你的情况下,你可能想要
SetCurrentDirectory。 -
至于你所做的事情不起作用的实际原因,因为它产生了一个外部进程,所以更改目录的是外部进程,而不是你的。你的等待直到外部进程开始,改变它自己的当前目录,完成然后恢复。