什么是进程句柄?

什么是进程句柄?

什么是进程句柄,我们可以通过任务资源管理器中的“句柄数”属性了解有关正在运行的进程的哪些信息?

在此处输入图片描述

答案1

进程句柄是一个整数值,用于向 Windows 标识进程。Win32 API 将它们称为 HANDLE;窗口句柄称为 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) 非常相似。

相关内容