【问题标题】:system("cd <path>") in a C programC 程序中的系统(“cd <路径>”)
【发布时间】:2014-09-03 12:48:05
【问题描述】:


我正在尝试在 C 程序中使用 system() 函数。
例如,我尝试使用 system() 函数在我的桌面上创建一个目录。
我的代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("cd c:\\Users\\USER\\Desktop");
   system("mkdir test");
   return 0;
}

当我运行此代码时,会创建一个目录,但不在我的桌面上。它是在我的项目目录中创建的。
为什么会这样?
我可以在 system() 函数中使用 cd 命令吗?如果没有,是否有替代 cd 命令可以与 system() 一起使用?

我使用的是 Windows 操作系统。我正在尝试使用 C 程序中的 system(),就像使用 cmd 程序一样。
我知道我可以使用 WinAPI 创建目录而没有任何问题。我不想使用 WinAPI,我的问题是如何使用 system() 使其工作。

【问题讨论】:

  • 关于你的最后一段:为什么?使用system() 代替标准函数有什么作用?你想达到什么你认为只能通过使用system() 才能实现的目标?还是只是为了玩玩?

标签: c windows cmd system cd


【解决方案1】:

更改后的目录仅在系统命令期间持续。该命令会启动一个单独的程序,该程序会从您的程序继承其当前目录,但当该程序退出时,其当前目录会随之消失。

您可以使用&amp;&amp; 将命令连接在一起,它会起作用:

system("cd /D C:\\Users\\USER\\Desktop && mkdir test");

我还添加了/D 开关,否则如果从其他驱动器调用 CD 命令,它不会更改驱动器号。

但是,mkdir 完全能够接受完整路径,因此您可以简单地这样做:

system("mkdir C:\\Users\\USER\\Desktop\\test");

【讨论】:

  • 谢谢。因此,我需要将其视为 system() 函数“创建”一个 cmd 程序,并且在函数返回它创建的 cmd 程序后退出?我知道上面的描述并不准确,但我说的有道理吗?
  • @Programmer 是准确的。这就是它的作用。
  • 好的,非常感谢。 :) 我得到了答案。
【解决方案2】:

当您说system("some shell command"); 时,程序会生成一个shell 来运行该命令。 shell 对当前目录有自己的想法,与您的程序不同。 shell cds 按照您的要求转到目录,然后死掉,您的进程的 CWD 不受影响。

您可以简单地说_chdir("c:\\Users\\User\\Desktop"); 在运行“mkdir”命令之前设置当前目录。生成运行它的 shell 将继承您程序的当前目录并将该文件夹放置在正确的位置。

(就此而言,您也可以说_mkdir("test"),并停止不必要地使用system。当您尝试做一些值得运行外部程序/外壳的事情时,您应该只使用system .)

【讨论】:

    【解决方案3】:

    你必须像这样在一行上执行这两个命令,

    system("cd c:\\Users\\USER\\Desktop && mkdir test");
    

    【讨论】:

      猜你喜欢
      • 2015-10-15
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      相关资源
      最近更新 更多