8

我有一个问题,我必须从 C 程序内部运行命令提示符命令。这是我所做的

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


int main(){



system("cd \Users");
system("Dir");

}

问题是我想先 cd 进入用户,然后执行命令 Dir,因为目前程序输出它找不到指定的路径,并且 Dir 在父进程目录中执行,即程序源文件所在的位置。

我想要做的实际任务只是想从 C 程序内部的特定目录运行 java 文件。该 java 文件位于 C:\Users\Abdullah\pro 中。我的 C 程序的父目录是 C:\Users\Cprog。请告知我该怎么做

4

5 回答 5

6

system()开始一个新的过程。这个新进程会更改当前目录,然后结束。程序进程的当前目录不会改变。

你想要chdir()(或_chdir())。

于 2012-05-30T07:18:05.243 回答
5

您的程序有一些不正确的假设。首先,“cd”和“dir”不是程序,而是shell内置的命令,cmd.exe。其次,我怀疑您根本不需要更改当前目录。

无论哪种方式,由于这是一个 Windows 系统,我将看一个有关如何使用 CreateProcess() 启动程序的示例

要更改当前目录,请查看 CreateProcess() 调用的lpCurrentDirectory 参数

于 2012-05-30T07:42:36.447 回答
2

仅对于 Windows,还有这个SetCurrentDirectory()函数。

于 2012-05-30T07:23:23.417 回答
0

' cd ' 不是您尝试执行的单独可执行文件。通常,'cd' 是 shell/command 的内置命令。您不能使用 'system()' 执行 'cd' 并期望使其在您的程序中相应地工作。如果您希望在程序中执行目录更改,则必须使用“chdir()”函数(或系统调用)。请参阅“chdir()”的手册页。

于 2012-05-30T07:55:26.690 回答
0

这应该有效:

system("dir Users\\whatEverNextFolder > test.txt");
于 2015-04-28T20:16:18.267 回答