Я создал дочерний процесс с CreateProcess с флагом BOOL bInheritHandles = TRUE
как я хочу передать некоторые дескрипторы анонимным каналам дочернему процессу.
я имею НЕ выставиться hStdInput
, hStdOutput
а также hStdErro
г и а STARTF_USESTDHANDLES
флаг в STARTUPINFO
struct, так как я не хочу что-то делать с дочерним stdout и т. д.
но дочерний процесс, кажется, наследует дескрипторы буферов консоли, и его вывод идет прямо в консоль родительского приложения. я хочу это предотвратить, поэтому я использовал
SetHandleInformation(GetStdHandle(STD_OUTPUT_HANDLE), HANDLE_FLAG_INHERIT, 0);
который сообщает об ошибке 87 — ERROR_INVALID_PARAMETER
Что я делаю неправильно?
Сообщение об ошибке говорит вам, что вы не можете установить HANDLE_FLAG_INHERIT
для стандартной ручки вывода.
Вместо этого вы должны создать процесс, передавая либо DETACHED_PROCESS
или же CREATE_NEW_CONSOLE
создание флагов. Или, если вы не хотите, чтобы дочерний процесс использовал другую консоль, вам нужно предоставить стандартные дескрипторы в STARTUPINFO
структура.