Създаване на процеси - studopediya

Създаване на процес - е преди всичко средство за създаване на манипулатор на процеса, в Qual-stve които изпълняват една или повече информационни структури, съдържащ цялата информация за процеса, за необходими операционна система, за да го управлява.







Три големи събития, водещи до създаването на процеси:

- зареждане на системата.

- Работа с Процесът отнема системата поканата да се създаде процес.

- процеса на създаване на потребителя Заявка.

Във всички случаи, текущият процес изпраща система призив за създаване на нов процес.

Операционната система на всеки процес се определя идентификатор на процес (PID - Метод идентификатор)

Когато създавате поток процес започва автоматично (това се нарича главницата). При прекъсване на основния поток и процесът спира автоматично. От началото на процеса не е поток безцелно отнема ресурси, системата автоматично изтрива стана ненужен процес. Основният процес се създава при стартиране на системата, по същия начин, за да се създаде първичен процес и създава поток.

Приложението може също така да се създаде процес с главния поток, като се използва за тази цел CreateProcess (функция). Неговият прототип е в winbase.h файл вдъхновява ужас светлина в първата среща с него:

BOOL CreateProcess (LPCSTR lpApplicationName,

Първият аргумент - lpApplicationName - посочва името на изпълнимия файл е създаден за този процес. Ако името на файла се дава без разширение, то се очаква да нарасне * .exe, който е приложен към името на файла. Ако името на файла завършва с точка (.), А след това * .exe да не се присъединят. Търсене програмата на файла изпълним е Windows в следния ред.

1. В директорията, където сте изтеглили приложението.

2. В текущата директория.

3. В системната директория на Windows.

4. В директорията на Windows, която връща функция GetWindowDirectory ().

5. Указанията, посочени в променливата от обкръжението, който определя реда на търсене в тях.







Вторият аргумент - lpCommandLine определя предава файл командния ред. Ако lpApplicationName е NULL, то платно-во (първо място, преди) lpCommandLine име елемент се счита изпълним.

Третият и четвъртият аргументи - lpProcessAttributes, lpThreadAttributes - определят атрибутите сигурност на про-процес и потока съответно. В Windows 9x тези стойности са NULL.

Петият областта - bInheritHandles - задава разрешение / забрана наследство дръжки процес обадите, ако е зададено на TRUE. С този нов процес наследява всеки наследствена дръжка, за да отворите в процеса на разговори. Ние наследихме дръжката, за да имат едни и същи ценности и привилегии като оригиналния diskriptorov.

Шестият областта - dwCreationFlag - е комбинация от битови флагове, които контролират процеса на създаване и назначаването на приоритет за него. Тази опция ви позволява да настроите класа приоритет за процеса на обекта, заедно с начина на неговото прилагане. Има две групи от флагове:

- флагове на процеса на създаване;

- Знамена, за да зададете нивото на приоритет.

Седмата аргумент - lpEnvironment - указател към създаването среда на нов процес. Това е списък на присвояване изрази под формата на променлива = стойност. прекратяване нулев знак. Обикновено това е NULL. Това означава, че генерираната процес наследява променливи за средата на процеса на родител. Ако този аргумент не е NULL, то тогава трябва да съдържа указател към блока памет съдържа-zhaschy тези променливи, които ще използвате процес генерира-даване.

Осмото аргумент функция - lpCurrentDirectory - указател към низ, съдържащ текущата устройството и в директорията за генерирания процес. Ако този аргумент е NULL, генерираното процес наследява текущата устройството и в директорията на процеса на родител. В противен случай, този аргумент трябва да сочи към низ, който указва пълния път до инсталирането на текущата директория, включително и буквата на устройството и.

Деветият аргумент - lpStartupInfo - указател към тип структура STARTUPINFO, която описва как да се показва в главния прозорец на кандидатстване.

CreateProcess () функция аргумент Десети - lpProcessInformation - показва вид структура PROCESS_INFORMATION а, в която е записана информация относно процеса на дете след създаването й. Тази структура е описана съдържащ дръжка създаден метод дръжка на потока, уникални идентификатори, и процес поток.

Тя трябва да се фокусира върху последните две полета. Фактът, че Win32, ако идентификаторът е освободен, може да го използвате отново. Например, да предположим, че идентификаторът на процес назначен 0x00001111. След идентификатора на процеса се освобождава, а някои нов процес може отново да имат същия идентификатор 0x00001111. Това трябва да се има предвид, когато пишете програми.