web-dev-qa-db-fra.com

Qu'est-ce qu'un processus de processus?

Qu'est-ce qu'un processus de processus et que pouvons-nous savoir sur un processus en cours d'exécution via la propriété "Compte de la poignée" dans un explorateur de tâches?

enter image description here

17
BlueGene

Une poignée de processus est une valeur entière qui identifie un processus à Windows. L'API Win32 les appelle une poignée; Les poignées aux fenêtres sont appelées HWND et des poignées aux modules HMODULE.

Les threads à l'intérieur des processus ont une poignée de thread et des fichiers et d'autres ressources (telles que les clés de registre) ont également des poignées.

Le nombre de personnes que vous voyez dans le gestionnaire de tâches est " le nombre de poignées d'objets dans la table d'objets du processus ". En effet, il s'agit de la somme de toutes les poignées que ce processus est ouverte.

Si vous ne libérez pas votre poignée à une ressource, d'autres personnes peuvent ne pas être en mesure d'y accéder - c'est pourquoi vous ne pouvez parfois pas supprimer un fichier car Windows affirme qu'il est utilisé (check out Cet article sur les fuites de la poignée et Explorateur de processus ).

En outre, il existe une limite de traitement des différentes poignées. Voici un exemple .

En général, si vous ouvrez des poignées et ne les fermez pas, il est analogue de fuir la mémoire. Vous devriez déterminer ce qui se passe et le réparer. Il y a un bon article de codeProject sur les fuites de poignée .

25
crb

La poignée est une valeur entière utilisée pour adresser un objet. Par exemple:

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

open() Est-ce que l'appel système renvoie une poignée, un petit entier non négatif à utiliser dans des appels système ultérieurs (lecture (2), écrire (2), lsek (2), FCNTL (2), etc. ).

Les poignées de Windows sont très similaires aux descripteurs de fichiers UNIX (FDS).

2
Premraj