|
|
||
3. Программа процесса с новой консолью
|
||
Листинг 4.2. Программа процесса, который создает процесс с новой консолью #include <windows.h> int main() STARTUPINFO si; ZeroMemory(&si, sizeof(STARTUPINFO)); // создаем новый консольный процесс _cputs("The new process is created.\n"); return 0; |
||
Отметим в этой программе два момента. Во-первых, перед запуском консольного процесса ConsoleProcess.exe все поля структуры si типа startupinfo должны заполняться нулями. Это делается при помощи вызова функции zeroMemory, которая предназначена для этой цели и имеет следующий прототип: В этом случае вид главного окна запускаемого приложения определяется по умолчанию самой операционной системой Windows. Во-вторых, в параметре dwCreationFiags устанавливается флаг create_new_console. Это говорит системе о том, что для запускаемого процесса должна быть создана новая консоль. Если этот параметр будет равен null, то новая консоль для запускаемого процесса не создается и весь консольный вывод нового процесса будет направляться в консоль родительского процесса. Структура piApp типа process_information содержит идентификаторы и дескрипторы нового создаваемого процесса и его главного потока. Мы не используем эти дескрипторы в нашей программе и поэтому закрываем их. Значение false параметра binheritHandle говорит о том, что эти дескрипторы не являются наследуемыми. |
||
|
||
3 |