Почему запуск исполняемого файла через cmd не вызывает системный вызов ()? - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть небольшой кусочек кода на C, как показано ниже. Я попытался запустить его, используя 2 метода.

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, - это строка «Бег завершен!» получил распечатанный нормально .

Однако, с 2, "result.txt" не был создан, и, таким образом, "Выполнение завершено!" строка никогда не появляется .

Теперь мне нужно, чтобы мой исполняемый файл был исполняемым в cmd для любого использования. Так может кто-нибудь помочь?

1 Ответ

0 голосов
/ 09 апреля 2019

Мне удалось решить проблему, но не очень удобным способом.

Мне нужно загрузить Microsoft Visual Studio, запустить Clion в среде VS и устранить определенную проблему совместимости.

Полагаю, хотя большая часть функции работает нормально, system() является исключением. В любом случае, эта команда не очень широко используется, но имейте это в виду при использовании ее в Windows с некоторым компилятором Linux.

...