¿Qué es un controlador de proceso?

Respuestas:

25

Un identificador de proceso es un valor entero que identifica un proceso para Windows. La API Win32 los llama un MANGO; los identificadores de ventanas se denominan HWND y los identificadores de módulos HMODULE.

Los subprocesos dentro de los procesos tienen un identificador de subproceso, y los archivos y otros recursos (como las claves de registro) también tienen identificadores.

El recuento de identificadores que ve en el Administrador de tareas es " el número de identificadores de objetos en la tabla de objetos del proceso ". En efecto, esta es la suma de todos los identificadores que este proceso tiene abiertos.

Si no libera su identificador a un recurso, es posible que otras personas no puedan acceder a él; es por eso que a veces no puede eliminar un archivo porque Windows afirma que está en uso (consulte este artículo sobre fugas de identificador y Process Explorer ).

Además, hay un límite por proceso en varios controladores. Aquí hay un ejemplo .

En general, si abre las manijas y no las cierra, es análogo a la pérdida de memoria. Debes descubrir qué está pasando y arreglarlo. Hay un buen artículo de CodeProject sobre fugas en el controlador .

crb
fuente
2

Handle es un valor entero que se usa para direccionar objetos. Por ejemplo:

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

open() Esta Llamada del sistema devuelve un identificador, un entero pequeño, no negativo para su uso en llamadas posteriores del sistema (lectura (2), escritura (2), lseek (2), fcntl (2), etc.).

Los identificadores de Windows son muy similares a los descriptores de archivos Unix (FD).

Premraj
fuente
La open()llamada al sistema de Windows está en desuso - docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi