Создание процесса, подключенного к консоли, но с перенаправленными стандартными дескрипторами ввода-вывода

#c #windows #winapi #win32-process

#c #Windows #winapi #win32-process

Вопрос:

У меня есть приложение командной строки, которое выполняет другие программы в соответствии с предоставленным пользователем сценарием. Некоторые из выполняемых дочерних процессов cmd.exe запускают различные .cmd сценарии. Некоторые .cmd скрипты задают заголовок окна консоли с помощью title команды командной строки Windows. И вот в чем проблема. Если пользователь запрашивает протоколирование выходных данных дочернего процесса, я использую каналы для стандартных дескрипторов, чтобы получить выходные данные от дочернего процесса. Однако это, похоже, приводит к тому, что дочерний процесс не подключается к консоли, в которой запущено мое приложение, и, таким образом, title команда перестает работать, перестает изменять заголовок окна консоли.

Возможно ли создать процесс с перенаправленными стандартными дескрипторами, но такой, который все еще подключен к консоли родительского процесса, чтобы title команда работала?

Ответ №1:

По-видимому, все, что нужно сделать для подключения дочернего процесса к родительской консоли, — это не использовать dwCreationFlags |= CREATE_NO_WINDOW; .