Операционные системы. Программирование в операционной среде Windows

12 // Подготовка к созданию процесса В // с наследуемым описателем ОЯ «процесс» saProcess.nLength = sizeof(saProcess); saProcess.IpSecurityDescriptor = NULL; saProcess.bInheritHandle = TRUE; saThread.nLength = sizeof(saThread); saThread.IpSecurityDescriptor = NULL; saThread.bInheritHandle = FALSE; // Создание процесса В с наследуемым описателем ОЯ «процесс» char szPath[]="ProcessB"; CreateProcessA(NULL, szPath, &saProcess, &saThread, FALSE, 0, NULL, NULL, &si, &piProcessB); //Создание процесса С с передачей ему наследуемых описателей strcpy(szPath, "ProcessC"); CreateProcessA(NULL, szPath, NULL, NULL, TRUE^ 0, NULL, NULL, &si,&piProcessC); Значение наследуемого описателя ОЯ можно передать дочернему процессу двумя способами: - через командную строку дочернего процесса; - через переменную окружения, установленную перед созданием дочернего процесса. Параметр fdwCreate определяет флаги, влияющие на то, как именно создается новый процесс. Флаги комбинируются булевым оператором OR. Например, флаг GREATE ST JSPKNDKD позволяет создать процесс и в то же время приостановить его первичный поток, флаг CREATE NEW CONSOLE приводит к созданию нового консольного окна для нового процесса. CreateProcessA ( , "с:\\...\\child. ехе", , , , CREATE_NEW_CONSOLE, , Параметр pvEnvironment указывает на блок памяти, хранящий строки переменных окружения, которыми будет пользоваться новый процесс. Обычно вместо этого параметра передается NULL, в результате чего дочерний процесс наследует строки переменных окружения от родительского процесса. Параметр pszCurDir позволяет родительскому процессу установить текущие диск и каталог для дочернего процесса. Если задано значение NULL, рабочий каталог нового процесса будет тем же, что и у приложения, его породившего. Параметр psiStartlnfo указывает на структуру STARTUPINFO. Элементы структуры STARTUPINFO используются при создании процесса (на каком рабочем столе, какого размера окно, заголовок окна и т.д.). Большинство приложений порождает процессы с атрибутами по умолчанию, но и в этом случае необходима инициализация элементов структуры STARTUPINFO. STARTUPINFOA si = { sizeof(si) };

RkJQdWJsaXNoZXIy MTY0OTYy