什么是进程句柄,我们可以通过任务资源管理器中的“句柄数”属性了解有关正在运行的进程的哪些信息?
答案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) 非常相似。