プロセスハンドルとは


回答:


25

プロセスハンドルは、Windowsに対してプロセスを識別する整数値です。Win32 APIはそれらをハンドルと呼びます。ウィンドウへのハンドルはHWNDと呼ばれ、モジュールHMODULEへのハンドルです。

プロセス内のスレッドにはスレッドハンドルがあり、ファイルやその他のリソース(レジストリキーなど)にもハンドルがあります。

タスクマネージャに表示されるハンドルカウントは、「プロセスのオブジェクトテーブル内のオブジェクトハンドルの数」です。実際には、これはこのプロセスが開いているすべてのハンドルの合計です。

リソースへのハンドルを解放しないと、他の人がそれにアクセスできない場合があります-Windowsが使用中であると主張するため、ファイルを削除できない場合があります(ハンドルリークとProcess Explorerに関するこの記事をご覧ください)。

また、さまざまなハンドルにはプロセスごとの制限があります。 以下に例を示します。

一般に、ハンドルを開いて閉じない場合、メモリリークに似ています。何が起こっているのかを把握し、修正する必要があります。ハンドルリークに関するCodeProjectの良い記事があります。


2

ハンドルは、オブジェクトのアドレス指定に使用される整数値です。例えば:

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

open() システムコールは、後続のシステムコール(read(2)、write(2)、lseek(2)、fcntl(2)など)で使用するための小さな非負整数のハンドルを返します。

Windowsハンドルは、Unixファイル記述子(FD)に非常に似ています。


Windowsのopen()システムコールは非推奨です-docs.microsoft.com/en-gb/cpp/c-runtime-library/reference/open
yoniLavi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.