句柄介绍
在程序设计中,句柄是一种特殊的智能指针。当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存 块或对象时,就要使用句柄。
句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间接访问对象的模式增强了系统对引用对象的控制。
在linux中文件操作也有类似于FILE的一个概念,在Linux里,这叫做文件描述符(FileDescriptor),而在Windows里,叫做句柄(Handle).用户通过某个函数打开文件以获得句柄,此后用户操纵文件皆通过该句柄进行。
句柄泄漏查看
ls -l /proc/$pid/fd|grep total
句柄泄漏的情况
While(1){
If (fd != null){
fclose(fd);
}
printf('file close');
fd = fopen(filename,'r');
}
while循环的最后一个句柄fd没有关闭,导致泄漏。
句柄泄漏的现象
文件句柄数不断增加。