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

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

введите описание изображения здесь

2 ответа

Решение

Дескриптор процесса - это целочисленное значение, которое идентифицирует процесс в Windows. Win32 API называет их РУЧКОЙ; дескрипторы для окон называются 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).

Другие вопросы по тегам