Что такое дескриптор процесса и что мы можем узнать о запущенном процессе с помощью свойства «счетчик дескрипторов» в проводнике задач?
Дескриптор процесса - это целое число, которое идентифицирует процесс для Windows. API Win32 называет их РУЧКОЙ; дескрипторы окон называются HWND, а дескрипторы модулей HMODULE.
Потоки внутри процессов имеют дескрипторы потока, а файлы и другие ресурсы (например, ключи реестра) также имеют дескрипторы.
Количество дескрипторов, которое вы видите в диспетчере задач, составляет "количество дескрипторов объектов в таблице объектов процесса". По сути, это сумма всех дескрипторов, открытых этим процессом.
Если вы не отпустите свой дескриптор ресурса, другие люди могут не получить к нему доступ - вот почему вы иногда не можете удалить файл, потому что Windows утверждает, что он используется (см. эта статья об утечках дескрипторов и Process Explorer).
Кроме того, для различных дескрипторов существует ограничение на процесс. Вот пример.
В общем, если вы открываете дескрипторы, а не закрываете их, это аналог утечки памяти. Вы должны выяснить, что происходит, и исправить это. Есть хороший Статья CodeProject о ручных утечках.
Дескриптор - это целое число, которое используется для адресации Объектов. Например:
int handle = open( "foo.txt", OTHER_STUFF_HERE );
open()
is System Call возвращает дескриптор, небольшое неотрицательное целое число для использования в последующих системных вызовах (read (2), write (2), lseek (2), fcntl (2) и т. д.).
Дескрипторы Windows очень похожи на дескрипторы файлов Unix (FD).