Окно вывода сборки не обновляется до закрытия приложения в режиме запуска (Windows)

У меня есть система сборки, которая запускает скрипт сборки, а затем выполняет программу. Проблема в том, что любой вывод, который делает программа, не распечатывается, пока приложение не завершится.

Я попытался запустить программу из пакетного скрипта и со следующим:

{
    "cmd": "build.bat Release & cd bin & .\\editor.exe & cd ..",
    "working_dir": "${project_path:${folder}}",
    "shell": true,
}

Что-нибудь нужно сделать, чтобы избежать такого поведения?

Вот простой код C++, который воспроизводит проблему:

#include <stdio.h>
#include <thread>

int main(int argc, char** argv)
{    
    using namespace std::chrono_literals;

    fprintf(stderr, "Hello, World\n");
    std::this_thread::sleep_for(2s);

    return 0;
}

РЕДАКТИРОВАТЬ: Как указал OdatNurd, позвонив fflush в коде C++ делает свою работу. Но я бы предпочел не изменять мой исходный код, чтобы он правильно работал с возвышенным. Для меня инструмент должен адаптироваться к коду, а не наоборот.

РЕДАКТИРОВАТЬ 2: Похоже, что это не происходит в Linux, поэтому я думаю, что это некоторые специфические вещи для Windows. Я обновил название в последствии.

0 ответов

Другие вопросы по тегам