Was ist ein Prozesshandle?


Antworten:


25

Ein Prozesshandle ist ein ganzzahliger Wert, der einen Prozess für Windows angibt. Die Win32-API nennt sie HANDLE. Handles zu Fenstern heißen HWND und Handles zu Modulen HMODULE.

Threads in Prozessen haben ein Thread-Handle, und Dateien und andere Ressourcen (z. B. Registrierungsschlüssel) haben ebenfalls Handles.

Die Anzahl der Handles, die Sie im Task-Manager sehen, ist " die Anzahl der Objekthandles in der Objekttabelle des Prozesses ". Tatsächlich ist dies die Summe aller Handles, die dieser Prozess geöffnet hat.

Wenn Sie Ihr Handle nicht für eine Ressource freigeben, können andere Personen möglicherweise nicht darauf zugreifen. Aus diesem Grund können Sie eine Datei manchmal nicht löschen, da Windows behauptet, sie sei in Verwendung (lesen Sie diesen Artikel zu Handle-Lecks und Process Explorer ).

Außerdem gibt es eine prozessbezogene Beschränkung für verschiedene Punkte. Hier ist ein Beispiel .

Wenn Sie Handles öffnen und nicht schließen, führt dies im Allgemeinen zu einem Speicherverlust. Sie sollten herausfinden, was los ist, und es beheben. Es gibt einen guten CodeProject-Artikel zu Grifflücken .


2

Handle ist ein ganzzahliger Wert, der zur Adressierung eines Objekts verwendet wird. Beispielsweise:

int handle = open( "foo.txt", OTHER_STUFF_HERE );

open() is System Call gibt ein Handle zurück, eine kleine, nicht negative Ganzzahl zur Verwendung in nachfolgenden Systemaufrufen (read (2), write (2), lseek (2), fcntl (2) usw.).

Windows-Handles sind Unix-Dateideskriptoren (FDs) sehr ähnlich.


Der Windows- open()Systemaufruf ist veraltet - docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.