Létrehozása folyamatok - studopediya
Hozzon létre egy folyamat - elsősorban azt jelenti, hogy hozzon létre egy kart a folyamatban, a minő-stve amelyek egy vagy több információs struktúrák, amely tartalmazza az összes információt a folyamat, a szükséges operációs rendszer kezelni azt.
Három fontos esemény létrehozásához vezető folyamatok:
- Indítsa el a rendszert.
- Munkavégzés a folyamat a rendszer hívást létre egy folyamat.
- felhasználói kérés létrehozásának folyamata.
Minden esetben, a jelenlegi aktív folyamat küld egy rendszer hívás, hogy új eljárást.
Az operációs rendszer, hogy minden egyes folyamat van rendelve egy folyamat azonosító (PID - Process IDentifier)
Amikor létrehoz egy folyamatábra automatikusan elindul (ez az úgynevezett fő). Fékezéskor a fő áramlási és a folyamat automatikusan leáll. Mivel ez a folyamat nem áramlik céltalanul veszi forrásokat, a rendszer automatikusan törli a feleslegessé vált eljárás. Az elsődleges folyamat jön létre a rendszer indításakor, ugyanúgy létre az elsődleges folyamat, és ez megteremti áramlását.
Az alkalmazás is létre egy folyamat a fő stream, hogy erre a célra CreateProcess () függvény. A prototípusa a winbase.h fájl inspirálja horror fény az első találkozó vele:
BOOL CreateProcess (LPCSTR lpApplicationName,
Az első érv - lpApplicationName - nevét adja meg a futtatható fájl jön létre a folyamatot. Ha a fájl neve kiterjesztés nélkül adott, akkor várható, hogy bontsa ki a * .exe, amely csatlakozik a fájl nevét. Ha a fájlnév végén egy pont (.), Akkor a * .exe nem csatlakozhat. Keresés a fájl végrehajtható program a Windows a következő sorrendben.
1. A könyvtár, ahová letöltötte az alkalmazást.
2. Az aktuális könyvtárban.
3. A Windows rendszer könyvtárába.
4. A Windows könyvtárban, amely visszaadja GetWindowDirectory () függvényt.
5. A felsorolt könyvtárak a PATH környezeti változó, amely meghatározza a sorrendben keresési bennük.
A második érv - lpCommandLine határozza továbbítja az aktát parancssorban. Ha lpApplicationName NULL, akkor a sáv-st (első tér előtt) lpCommandLine elem nevét tartják végrehajtható.
A harmadik és negyedik érv - lpProcessAttributes, lpThreadAttributes - meghatározza a biztonsági jellemzőket pro-folyamat és az áramlás volt. Windows 9x ezek az értékek NULL.
Az ötödik mező - bInheritHandles - állítja engedély / tiltás öröklés fogantyúk hívó folyamat, ha TRUE. Ezzel az új eljárással örökli minden örökölhető fogantyú nyílik a hívó folyamat. Mi örökölte a fogantyút, hogy ugyanazokat az értékeket és a kiváltságok, mint az eredeti diskriptorov.
A hatodik mezőt - dwCreationFlag - kombinációja bit zászlók, hogy ellenőrizzék a teremtés folyamata és a kinevezését prioritás számára. Ez az opció lehetővé teszi, hogy a prioritási osztálytól a folyamat az objektum mellett a mód annak végrehajtását. Két csoport a zászlók:
- zászlók a teremtés folyamata;
- Zászlók prioritási szintjének beállítása.
Hetedik érv - lpEnvironment - egy mutatót a beállítás környezet, az új eljárás. Ez a lista a hozzárendelés kifejezések formájában változó = érték. lezáró null karaktert. Általában ez NULL. Ez azt jelenti, hogy a generált folyamat örökli a környezeti változókat a szülő folyamat. Ha ez az érv nem NULL, akkor tartalmaznia kell egy mutatót a memória blokk tartalmaz-e zhaschy környezeti változók, amit használni fog generált adó folyamatot.
A nyolcadik érv funkció - lpCurrentDirectory - egy mutatót tartalmazó karakterlánc aktuális meghajtó és könyvtár a létrehozott folyamat. Ha ez az érv NULL, a generált folyamat örökli az aktuális meghajtó és könyvtár a szülő folyamat. Egyébként ez az érv kell mutatnia egy string, amely meghatározza a teljes elérési utat a telepítés az aktuális könyvtárban, beleértve a meghajtóra és.
A kilencedik érv - lpStartupInfo - egy mutató a szerkezet típusa STARTUPINFO, amely leírja, hogyan kell megjeleníteni az alkalmazás főablakát.
CreateProcess () függvény argumentum tizedik - lpProcessInformation - jelezve a szerkezet típusa PROCESS_INFORMATION, amelyben információ van rögzítve a gyermek folyamat létrehozása után. Ez a szerkezet van leírva, amely egy fogantyút létrehozott folyamatábra fogantyú, egyedi azonosítók, és a folyamatábra.
Meg kell összpontosítani az utolsó két területen. Az a tény, hogy a Win32, ha az azonosító megjelent, újra használni. Tegyük fel például, hogy a folyamat rendelt azonosító 0x00001111. Miután a folyamat azonosítója felszabadul, és néhány új eljárást újra kell rendelni ugyanazt az azonosítót 0x00001111. Ezt figyelembe kell venni, amikor az írás programokat.