什么是进程句柄?

什么是进程句柄,我们可以通过任务资源pipe理器中的“句柄计数”属性了解正在运行的进程?

在这里输入图像描述

    进程句柄是一个整数值,用于标识Windows的进程。 Win32 API将其称为HANDLE; 窗口句柄称为HWND,并处理模块HMODULE。

    进程内的线程有一个线程句柄,文件和其他资源(如registry键)也有句柄。

    您在任务pipe理器中看到的句柄数是“ 进程的对象表中的对象句柄的数量 ”。 实际上,这是该进程打开的所有句柄的总和。

    如果你没有释放你的句柄资源,其他人可能无法访问它 – 这就是为什么你有时不能删除一个文件,因为Windows声称它正在使用(看看这篇文章处理泄漏和Process Explorer )。

    另外,在各种手柄上还有每个进程的限制。 这是一个例子 。

    一般来说,如果你打开句柄而不closures它,这就类似于泄漏的内存。 你应该弄清楚发生了什么,并修复它。 有一个很好的CodeProject文章处理泄漏 。

    句柄是一个整数值,用于处理对象。 例如:

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

    open()是系统调用返回一个句柄,一个小的非负整数,用于后续的系统调用(read(2),write(2),lseek(2),fcntl(2)等)。

    Windows句柄与Unix文件描述符(FD)非常相似。