Тоді програма виглядає як запущена в іншій нитці, відрізняється від cmd.
Ну, програма працює в окремому процесі , який має власні нитки.
У Windows існує два основних типи програм: консольна та віконна.
Консольні програми - це як правило текстові програми, які друкують текст. Вони вже ведуть себе так, як вам хочеться: ви запускаєте програму, оболонка ( cmd.exe) чекає її закінчення, перш ніж повернути вас до інтерактивного запиту. Якщо програма триває, примусове припинення cmd.exeприпиняє програму.
Windowed програми , як правило , додатки , які мають графічний користувальницький інтерфейс (наприклад notepad.exe, explorer.exe, firefox.exe). Вони не ведуть себе так, як вам хочеться: коли ви запускаєте їх cmd.exe, cmd.exeне чекайте їх і негайно повертаєте вас до інтерактивного підказки. Виконана програма працює незалежно від cmd.exe, а припинення однієї не впливає на іншу.
Зауважте, що консольні програми можуть мати вікна та що віконні програми можуть мати консольний вихід. То що робить програму "консольною" чи "віконною"?
Частина .exeвказує, чи слід її запускати з підсистемою «консоль» або з підсистемою «windows». Це налаштовано (часто неявно) під час побудови програми. Це можна змінити після побудови програми; editbin.exe(в комплекті з Visual Studio) може змінювати .exeфайл і змінювати, яку підсистему повинна використовувати програма.
Якщо ви просто хочете побачити вихід stdout та stderr, вам не потрібно змінювати .exeфайл. Зазвичай програми з вікном не надсилають цей вихід нікуди, але ви можете змінити це за допомогою труб / переадресацій. Наприклад, ви можете запустити:
SomeWindowedApplication.exe > output.txt
або, якщо у вас є cat(або еквівалент):
SomeWindowedApplication.exe | cat
Це також змусить cmd.exeзачекати, коли програма закінчиться, перш ніж повернути вас до інтерактивного запиту. Зверніть увагу , що це НЕ має поведінка термінації ви хочете (тобто припинення cmd.exeв останньому прикладі закінчиться cat.exe, чи не ShowWindowedApplication.exe).
Також дивіться: