Pro*_*mer 9 c windows cmd cd system
我正在尝试在C程序中使用system()函数.
例如,我尝试使用system()函数在桌面上创建一个目录.
我的代码:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("cd c:\\Users\\USER\\Desktop");
system("mkdir test");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,会创建一个目录,但不会在我的桌面上创建.它是在我的项目目录中创建的.
为什么会这样?
我可以在system()函数中使用cd命令吗?如果没有,是否可以替换将与system()一起使用的cd命令?
我正在使用Windows操作系统.我正在尝试使用来自C程序的system(),因为我使用的是cmd程序.
我知道我可以使用WinAPI创建目录而没有任何问题.我不想使用WinAPI,我的问题是如何使用system()使其工作.
Boa*_*ann 12
更改的目录仅持续系统命令的持续时间.该命令启动一个单独的程序,该程序从程序继承其当前目录,但是当该程序退出当前目录时,它会死掉.
您可以使用&&将命令连接在一起,它将起作用:
system("cd /D C:\\Users\\USER\\Desktop && mkdir test");
Run Code Online (Sandbox Code Playgroud)
我还添加了/D开关,或者CD命令如果从不同的驱动器调用则不会更改驱动器号.
但是,mkdir完全能够接受完整路径,因此您可以简单地执行:
system("mkdir C:\\Users\\USER\\Desktop\\test");
Run Code Online (Sandbox Code Playgroud)
当你说system("some shell command");,程序产生一个shell来运行命令.shell有自己的当前目录的想法,与你的程序分开.shell cd就像你要求的那样进入目录,然后死掉,让你的进程的CWD不受影响.
您可以简单地说_chdir("c:\\Users\\User\\Desktop");在运行"mkdir"命令之前设置当前目录.然后生成运行它的shell将继承程序的当前目录并使文件夹位于正确的位置.
(就此而言,您也可以这样说_mkdir("test"),并且system不必要地停止使用.只有system在您尝试执行值得运行外部程序/ shell的操作时才应该使用.)
| 归档时间: |
|
| 查看次数: |
10887 次 |
| 最近记录: |