WebHU - Programozási kérdések és válaszok

Hogyan tudható meg a gyermekfolyamatok állapota és az erőforrás-használat a Windows rendszeren?

Szeretnék írni egy programot, ami elindít egy gyermek folyamatot. A gyermekfolyamat lehet Windows mód vagy konzol módú program.

Figyelni szeretném a gyermekfolyamatok állapotát és az erőforrás-használatot. például. Szeretném tudni, hogy a gyermekfolyamat még mindig fut vagy leállt. Ha megszűnt, szeretném tudni az okát (normál vagy összeomlás miatt szűnt meg?).

És a gyermekfolyamat futása és/vagy leállása közben szeretném tudni az erőforrás-használatát, különösen a CPU-időt (felhasználói idő, rendszer) és a memóriahasználatot (virtuális méret és/vagy rss). Nem baj, ha a számok nem túl pontosak.

Unix terminológiában fork, exec, waitpid és getrusage akarok lenni. A fork+setrusage+exec pedig korlátozhatja a gyermek erőforrás-használatát. De nem tudom, hogyan kell ezeket Windows platformon megtenni.

Kérem, adja meg a Windows API nevét. A többit magam is tanulmányozhatnám.

Ne használjon más könyvtárat, mint a Windows API-t. Inkább ne a szülő dolgozzon hibakeresőként, és csatlakozzon a gyermekfolyamathoz. Csak nem preferált, de még elfogadható.


Válaszok:


1

A CreateProcess meghívásakor egy leírót ad vissza a folyamathoz.

A folyamatleíró WaitForSingleObject blokkolja, amíg a folyamat ki nem lép, vagy az időtúllépés le nem jár. A nulla időtúllépés azonnal visszatér, és jelzi, ha a folyamat még mindig fut.

BOOL IsProcessRunning(HANDLE process)
{
    return WaitForSingleObject(process, 0) != WAIT_OBJECT_0;
}

void WaitForProcessToExit(HANDLE process)
{
    WaitForSingleObject(process, INFINITE);
}

Egy futó folyamat kilépési kódjának lekéréséhez használhatja a GetExitCodeProcess programot. Értelmeznie kell azonban, mit jelent a hibakód. A 0xC0000005 jellemző a hozzáférés megsértésére, de nem minden összeomlás eredményezi ezt a hibakódot.

Az erőforrás-használathoz hívhatja a GetProcessTimes-t a teljes CPU-időért, a GetGuiResources-t a GDI-kezelési információkért, a GetProcessMemoryInfo-t a memóriastatisztikákért, a GetProcessIoCounters-t pedig az IO-információkért.

15.05.2009
Új anyagok

A rádiógomb ellenőrzött eseményének használata a jQueryben
Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

Miért érdemes elkezdeni a kódolást 2023-ban?
01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

🎙 Random Noise #2  – Örökbefogadás és hit
az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..