系统(“cd <path>”)在C程序中
我试图在C程序中使用system()函数。
例如,我尝试使用system()函数在桌面上创build一个目录。
我的代码:
#include <stdio.h> #include <stdlib.h> int main(void) { system("cd c:\\Users\\USER\\Desktop"); system("mkdir test"); return 0; }
当我运行这个代码时,会创build一个目录,但不在我的桌面上。 它是在我的项目目录中创build的。
为什么发生这种情况?
我可以在system()函数中使用cd命令吗? 如果没有,是否有一个替代cd命令,将与system()?
我正在使用Windows操作系统。 我试图从C程序中使用system(),因为我使用cmd程序。
我知道我可以使用WinAPI创build目录,没有任何问题。 我不想使用WinAPI,我的问题是如何使它使用system()。
更改后的目录只会持续系统命令的持续时间。 该命令启动一个单独的程序,它从您的程序inheritance其当前目录,但当该程序退出时,其当前目录将随之死亡。
您可以使用&&
将这些命令一起join,它将起作用:
system("cd /DC:\\Users\\USER\\Desktop && mkdir test");
我还添加了/D
开关,否则如果从不同的驱动器调用CD命令,则不会更改驱动器号。
但是,mkdir完全可以接受完整的path,所以你可以简单地做:
system("mkdir C:\\Users\\USER\\Desktop\\test");
当你说system("some shell command");
,该程序产生一个shell来运行该命令。 shell对当前目录有自己的想法,与程序分开。 shell按照你的要求cd
到目录,然后死掉,使你的进程的CWD不受影响。
你可以简单的说_chdir("c:\\Users\\User\\Desktop");
在运行“mkdir”命令之前设置当前目录。 运行它的shell将inheritance你的程序的当前目录,并将文件夹放在正确的位置。
(对于这个问题,你也可以说_mkdir("test")
,并且停止不必要的使用system
。当你试图做一些值得运行一个外部程序/ shell的东西的时候,你应该只访问system
。
你必须像这样在一行上执行这两个命令,
system("cd c:\\Users\\USER\\Desktop && mkdir test");