Консольні програми, створені за допомогою Mingw для Windows, часом відкривають окреме вікно консолі при запуску з Windows Console (cmd.exe). Це може бути несподіваним і дратівливим для розробників. Недавно я стикнувся з цією проблемою, коли компілював просту програму hello world для Windows з Linux:
1 2 3 4 5 6 7 8 |
#include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { for(int i = 0; i < 10; i++) { printf("i = %d\n", i); sleep(1); } } |
До мого здивування, при запуску скомпільованого виконуваного файлу з Windows Console, відкривалось окреме вікно консолі замість того, щоб виводити повідомлення stdout в тому ж вікні консолі. Це викликало питання:
Я ретельно шукав рішення, але не зміг знайти жодного опису проблеми, навіть на Stack Overflow. Також порівнював це з запуском консольної програми стороннього виробника з Windows Console (usbip.exe), яка працювала так, як очікувалося.
Деякі поради, які я знайшов, стосувалися пропуску прапорця -mconsole
під час процесу компіляції. Однак це не вирішувало проблему. Я навіть спробував використати -mwindows
, що запобігло відкриттю нового вікна консолі, але також не виводило нічого на вікно консолі.