Co to jest uchwyt procesu i co możemy wiedzieć o uruchomionym procesie za pomocą właściwości „uchwyt count” w eksploratorze zadań?
Co to jest uchwyt procesu i co możemy wiedzieć o uruchomionym procesie za pomocą właściwości „uchwyt count” w eksploratorze zadań?
Uchwyt procesu jest wartością całkowitą, która identyfikuje proces w systemie Windows. Win32 API nazywa je UCHWYTEM; uchwyty do okien nazywane są HWND, a uchwyty do modułów HMODULE.
Wątki w procesach mają uchwyt wątku, a pliki i inne zasoby (takie jak klucze rejestru) również mają uchwyty.
Liczba uchwytów widoczna w Menedżerze zadań to „ liczba uchwytów obiektów w tabeli obiektów procesu ”. W efekcie jest to suma wszystkich uchwytów otwartych przez ten proces.
Jeśli nie zwolnisz uchwytu do zasobu, inne osoby mogą nie mieć do niego dostępu - dlatego czasami nie możesz usunąć pliku, ponieważ system Windows twierdzi, że jest on używany (sprawdź ten artykuł na temat wycieków uchwytów i Eksploratora procesów ).
Istnieje również limit na proces dla różnych uchwytów. Oto przykład .
Ogólnie rzecz biorąc, jeśli otwierasz uchwyty, a nie je zamykasz, jest to analogiczne do wycieku pamięci. Powinieneś dowiedzieć się, co się dzieje i to naprawić. Dobry artykuł CodeProject na temat wycieków .
Uchwyt to wartość całkowita, która służy do adresowania obiektów. Na przykład:
int handle = open( "foo.txt", OTHER_STUFF_HERE );
open()
is System Call zwraca uchwyt, małą, nieujemną liczbę całkowitą do użycia w kolejnych wywołaniach systemowych (read (2), write (2), lseek (2), fcntl (2) itd.).
Uchwyty systemu Windows są bardzo podobne do deskryptorów plików systemu Unix (FD).
open()