我有一小段 C 代码,如下所示。我尝试过使用两种方法来运行它。
1)与Clion一起使用Cygwin64环境
2)使用命令提示符(在这种情况下,我必须将 cygwin1.dll 移动到与可执行文件相同的文件夹中)。
我的代码需要调用 system() 函数来运行一些 cmd 命令。
如果我尝试第一种方法,代码可以完美运行。然而,当使用第二种方法时,system() 调用似乎什么也没做。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
FILE *fp=fopen("run.bat", "w+");
fprintf(fp,"dir > result.txt\n");
fclose(fp);
printf("Before calling System\n");
system("cmd.exe /c run.bat");
if(access("result.txt",F_OK)==0){
printf("Run completed!\n");
}
printf("After calling System\n");
}
我用 1 得到的结果是“运行完成!”得到printed out normally .
但是,对于 2,没有创建“result.txt”,因此“运行完成!”线never appears .
现在我需要我的可执行文件可以在 cmd 中执行才能发挥作用。那么有人可以帮忙吗?
最佳答案
我能够解决这个问题,但不是以一种非常方便的方式。
我必须下载Microsoft Visual Studio,并在VS环境下运行Clion,并修复某些兼容性问题。
我想虽然大多数函数都可以正常工作,但 system()
是一个异常(exception)。无论如何,这个命令的使用并不是很广泛,但是在带有一些 Linux 编译器的 Windows 上使用它时要注意。
关于c - 为什么通过 cmd 运行可执行文件不会调用 system() 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576567/