Назад | Перейти на главную страницу

Что такое дескриптор процесса?

Что такое дескриптор процесса и что мы можем узнать о запущенном процессе с помощью свойства «счетчик дескрипторов» в проводнике задач?

Дескриптор процесса - это целое число, которое идентифицирует процесс для 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).