Почему этот код C работает на Linux, но не на Windows без Cygwin - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть код C.

#include <stdio.h>
#include <time.h>
#include <unistd.h>
int main()
{
    int a = 1;
    while( a <= 5 )
    {

    time_t t = time(NULL);
    struct tm tm = *localtime(&t);
    printf("Normal prinf funcation call from C\n");
    fprintf(stdout, "STDOUT, Got on STDOUT from C. - now: %d-%d-%d %d:%d:%d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
    fprintf(stderr, "STDERR, Got in STDERR from C. - now: %d-%d-%d %d:%d:%d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
    sleep(1);
    a ++;
    }
    return 0;
}

В Linux Я компилирую этот код на C с помощью gcc. Двоичный файл генерируется.

При выводе двоичного файла я вижу следующее:

Normal prinf funcation call from C
STDOUT, Got on STDOUT from C. - now: 2018-11-10 17:44:38
STDERR, Got in STDERR from C. - now: 2018-11-10 17:44:38
Normal prinf funcation call from C
STDOUT, Got on STDOUT from C. - now: 2018-11-10 17:44:39
STDERR, Got in STDERR from C. - now: 2018-11-10 17:44:39
Normal prinf funcation call from C
STDOUT, Got on STDOUT from C. - now: 2018-11-10 17:44:40
STDERR, Got in STDERR from C. - now: 2018-11-10 17:44:40
Normal prinf funcation call from C
STDOUT, Got on STDOUT from C. - now: 2018-11-10 17:44:41
STDERR, Got in STDERR from C. - now: 2018-11-10 17:44:41
Normal prinf funcation call from C
STDOUT, Got on STDOUT from C. - now: 2018-11-10 17:44:42
STDERR, Got in STDERR from C. - now: 2018-11-10 17:44:42

На машине с Windows, используя cygwin и gcc , я компилирую тот же код C в файл .exe , затем пытаюсь запустить его в cmd (не Cygwin, работает на Cygwin). Ничто не печатается на экране.

Есть ли существенная разница между STDOUT / STDERR в Linux и в Windows?

Как можно распечатать файл .exe в командной строке (по крайней мере, вызов printf должен был сработать.)?

P.S: Я использую следующую команду в Linux и Windows для генерации двоичного файла / exe.

gcc C_code.c -o binary

1 Ответ

0 голосов
/ 10 ноября 2018

Cygwin - это POSIX-совместимая среда.Когда вы что-то компилируете в Cygwin - он предназначен для запуска в Cygwin.

Вам нужен порт GCC для Windows, называемый MinGW.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...