c - 为什么通过 cmd 运行可执行文件不会调用 system() 调用?

标签 c batch-file cmd clion

我有一小段 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/

相关文章:

windows - 从 Windows cmd 脚本执行多个命令

java - 创建 jar 文件时没有这样的 list 文件文件或目录,并且没有主 list 属性

c++ - malloc/new 是否从缓存或 RAM 返回内存块?

C - 我可以对这两个不同的列表使用相同的函数吗?

c - 为什么以下代码会抛出运行时错误,即使它显示了所需的输出?

Windows:从 CMD 返回值以存储为变量

windows - 使用批处理文件/脚本编辑注册表

windows - 如何向 Windows CMD 添加 gzip 命令?

通过 CMD 的 Java 命令在 C#.NET 中不起作用

c - 为什么这个 C 程序在运行时停止并且不显示任何输出?