Що таке ручка процесу?


Відповіді:


25

Ручка процесу - це ціле значення, яке ідентифікує процес в Windows. API Win32 називає їх РУКОВИМ; ручки для вікон називаються HWND, а ручки до модулів HMODULE.

Нитки всередині процесів мають ручку потоку, а файли та інші ресурси (наприклад, ключі реєстру) також мають ручки.

Кількість ручок, яку ви бачите в диспетчері завдань, - це " кількість ручок об'єкта в таблиці об'єктів процесу ". Фактично це сума всіх ручок, які цей процес відкрив.

Якщо ви не випускаєте свою ручку до ресурсу, інші люди можуть не мати доступу до неї. Ось чому ви іноді не можете видалити файл, оскільки Windows стверджує, що він використовується (ознайомтеся з цією статтею про витоки обробки та провідник процесів ).

Крім того, на різних ручках існує обмеження на процес. Ось приклад .

Загалом, якщо ви відкриваєте ручки і не закриваєте їх, це аналогічно витоку пам'яті. Вам слід розібратися, що відбувається, і виправити це. Існує хороша стаття CodeProject про витоки ручки .


2

Хендле - ціле значення, яке використовується для адреси об'єктів. Наприклад:

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

open() це System Call повертає ручку, невелике невід'ємне ціле число для використання в наступних системних викликах (read (2), write (2), lseek (2), fcntl (2) тощо).

Ручки Windows дуже схожі на дескриптори файлів Unix (FD).


Система open()системного виклику Windows застаріла - docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.