Che cos'è un handle di processo?


Risposte:


25

Un handle di processo è un valore intero che identifica un processo in Windows. L'API Win32 li chiama una MANIGLIA; le maniglie per Windows sono chiamate HWND e le maniglie per i moduli HMODULE.

I thread all'interno dei processi hanno un handle di thread e anche i file e altre risorse (come le chiavi di registro).

Il conteggio degli handle visualizzato in Task Manager è " il numero di handle degli oggetti nella tabella degli oggetti del processo ". In effetti, questa è la somma di tutti gli handle aperti da questo processo.

Se non rilasci il tuo handle su una risorsa, altre persone potrebbero non essere in grado di accedervi - questo è il motivo per cui a volte non puoi eliminare un file perché Windows afferma che è in uso (consulta questo articolo su perdite di handle e Process Explorer ).

Inoltre, esiste un limite per processo su vari handle. Ecco un esempio .

In generale, se si aprono le maniglie e non si chiudono, è analogo alla perdita di memoria. Dovresti capire cosa sta succedendo e risolverlo. C'è un buon articolo di CodeProject sulle perdite di handle .


2

Handle è un valore intero utilizzato per indirizzare un oggetto. Per esempio:

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

open() is System Call restituisce un handle, un intero piccolo e non negativo da utilizzare nelle successive chiamate di sistema (read (2), write (2), lseek (2), fcntl (2), ecc.).

Gli handle di Windows sono molto simili ai descrittori di file Unix (FD).


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.