Létrehozása 1. eljárás

A leggyakoribb módja, hogy elindítsa a folyamatot -, hogy indítsa el az alkalmazást a Windows Intézőben (Explorer) vagy a Start menüben (Start), vagy beírja a program nevét a parancssorban. Új eljárások általában létre:







Ha az operációs rendszer elindul,

Amikor a program kéri, hogy hozzon létre egy folyamat - ez történik, amikor a futó folyamat létrehoz egy új folyamatot.

Ezen túlmenően, a Win32 API több feladatot is ellát, amelyek segítségével létrehozhat és folyamatirányítás.

A technológiai folyamat lehet létrehozni egy másik folyamat meghívásával CreateProcess operációs rendszer.

Létrehozva egy új eljárás

if (CreateProcess ( "C: \\ Windows \\ system32 \\ calc.exe", NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, si, pi))

Ez a program létrehoz egy új folyamatot a normális prioritási osztály teljesítő calc.exe programot - kalkulátor. Ha a létrehozás folyamata befejeződött hiba nélkül, a CreateProcess értéke „true”, egy mutatót a struktúra PROCESS_INFORMATION (változó pi) tele van információkkal az újonnan létrehozott folyamat: identitás és leírásokat a folyamat és az elsődleges téma. Ha a szülő folyamat nem szükséges, hogy befolyásolja a gyermek folyamat meg kell állítsa le a folyamatot, és áramlási jellemzőket hívó CloseHandle.

A folyamat végrehajtásáról

A folyamat lehet kitölteni négy módja van:

A bemeneti funkció az elsődleges adatfolyam ilyen WinMain, visszaadja a vezérlést (a javasolt módszer).







Az egyik az anyagáramok okok ExitProcess funkciót (amely szintén előnyös).

Az áramlás a másik folyamat okoz TerminateProcess funkciót (nem kívánatos, a riasztási üzemmód).

Minden menet befejeződött a saját. De ez nagyon ritkán történik.

Javasoljuk, hogy tervezzen az alkalmazás, hogy a folyamat befejeződött csak visszatérése után az elsődleges vezérlési funkciót. Ez az egyetlen módja annak, hogy garantálja a megfelelő tisztítása összes erőforrás, hogy tartoznak a primer áramot. Egy ilyen befejezése, például bármilyen tárgyak C ++, a adatfolyam elpusztulnak megfelelő destruktorok. A rendszer felszabadítja a memóriát, hogy tartotta a cérna verem, és beállítja a folyamat kilépési kódot, amely visszaadja a bemeneti funkcióval.

Hívás TerminateProcess funkciót is megszakítja a folyamatot. A fő különbség a funkció és a ExitProcess, hogy képes okozni flow és befejezni ugyanakkor bármely folyamat. TerminateProcess funkciót kell használni, csak szélsőséges esetekben, amikor a folyamatot nem sikerül befejezni bármely más módon. A folyamat nem fog semmi értesítést, hogy teljes és az alkalmazás nem végez semmilyen tisztítási források vagy megakadályozza annak váratlan következtetésre. Ebben az esetben, ha elveszti az összes adatot, hogy a program nem volt ideje, hogy átírják a memóriából a lemezre. De az operációs rendszer, és ebben az esetben a közlemény valamennyi tulajdonában lévő erőforrások a folyamatot.

A negyedik helyzet alakulhat ki, ha minden szál okozott ExitThread vagy voltak zárva a többi szál hívja TerminateThread. Megállapította, hogy a folyamat nincs végrehajtási szál, az operációs rendszer azonnal kiegészíti azt. eljárás befejezését kód megegyezik a végén az utolsó kódfolyamból.

Abban az esetben, a következő műveleteket a folyamat befejezéséhez rendszert.

Teljesítménye minden áramlik a folyamat befejeződik.

Minden felhasználó objektumok és GDI-objektumok által létrehozott eljárás megszűnt, és a kernel objektumok zárva vannak, ha nem használja egy másik folyamat.

Object core „folyamat” megy a tétlen, vagy osztott (jelzett), állapot.

Counter felhasználók „folyamat” core objektum eggyel csökkentjük.