补充小知识:文件句柄与文件标识符
#文件句柄
这是操作系统里的一个概念,句柄是WINDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。
从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。
如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢?
为了解决这个问题,Windows操作系统为各应用程序腾出一些内存储地址,用来专门登记各应用对象在内存中的地址变化,而这个地址(存储单元的位置)本身是不变的。Windows内存管理器在移动对象在内存中的位置后,把对象新的地址告知这个句柄地址来保存。这样我们只需记住这个句柄地址就可以间接地知道对象具体在内存中的哪个位置。这个地址是在对象装载(Load)时由系统分配给的,当系统卸载时(Unload)又释放给系统。
句柄地址(稳定)→记载着对象在内存中的地址————→对象在内存中的地址(不稳定)→实际对象
本质:WINDOWS程序中并不是用物理地址来标识一个内存块,文件,任务或动态装入模块的,相反的,WINDOWS API给这些项目分配确定的句柄,并将句柄返回给应用程序,然后通过句柄来进行操作。
但是必须注意的是程序每次从新启动,系统不能保证分配给这个程序的句柄还是原来的那个句柄,而且绝大多数情况的确不一样的。假如我们把进入电影院看电影看成是一个应用程序的启动运行,那么系统给应用程序分配的句柄总是不一样,这和每次电影院售给我们的门票总是不同的一个座位是一样的道理。
#文件标识符
文件句柄:是windows下概念,在linux/unix下没有句柄这一说法,
在linux/unix下都是"文件描述符",是整型
转载于:https://www.cnblogs.com/Matrixssy/p/10164281.html
补充小知识:文件句柄与文件标识符相关推荐
- 【Python基础】Python处理文件的几个常用小知识
作者:来自读者投稿 来源:Python数据之道 Python处理文件的几个常用小知识 Python 这门语言有个很大的用途就是使用它来进行文件处理,学会处理文件和保存数据可以让你的程序使用起来更加容易 ...
- .gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...
今天来了解一下linux里面的一些小知识: (一)Linux系统中最大可以起多少个进程? (1)32位系统中最多可以起32768个进程 (2)64位系统中最多可以起2的22次方(4194304)约42 ...
- python金融分析小知识(38)——Jupyter Notebook更改文件路径
Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 大家好,好久不见我又来啦!今天要给大家分享的小 ...
- 计算机组装电源线排,电脑装机小知识,机箱如何完美走线-做第一期的简单补充...
原标题:电脑装机小知识,机箱如何完美走线-做第一期的简单补充 本期继续要讲的是,对于电脑里机箱走线,我已经做过一期对于电脑机箱走线的文章,还没有看过第一期的能够在本文末尾找到我的连接. 机箱走线欠妥会 ...
- 小猫爪:嵌入式小知识07-MCUXpresso GCC ld链接文件解析-链接代码至RAM
小猫爪:嵌入式小知识07-MCUXpresso GCC ld链接文件解析-链接代码至RAM 1 前言 2 基本语法 3 实例解析 4 链接代码至RAM 4.1 链接自定义section至RAM 4.2 ...
- [奇怪的小知识]从网页上下载内嵌的PDF、PPT文件(以Google浏览器为例)
[奇怪的小知识]从网页上下载内嵌的PDF.PPT文件(以Google浏览器为例) 1. 打开谷歌浏览器开发者工具 实操网址 2. 选中Network->Fetch/XHR 3. 刷新网页 刷新网 ...
- jquery/css需要记录的小知识(持续补充)
一.前言 2020年的第一篇了,奥利给! 这部分主要是汇总一些平时遇到的jquery和css小知识,作为笔记使用. 二.正文 1.jquery模拟select下拉框的选择事件,并传参数: self.s ...
- 怀旧服默认服务器文件,《魔兽世界》怀旧服:这些服务器名称的小知识你得知道...
原标题:<魔兽世界>怀旧服:这些服务器名称的小知识你得知道 魔兽世界怀旧服于8月27日上线,除了不少之前魔兽的老玩家之外,还有一些没有玩过魔兽世界的新玩家也纷纷蠢蠢欲动,想要体验一下各路大 ...
- 文件句柄?文件描述符?傻傻分不清楚
概述 在实际工作中会经常遇到一些bug,有些就需要用到文件句柄,文件描述符等概念,比如报错: too many open files, 如果你对相关知识一无所知,那么debug起来将会异常痛苦.在li ...
最新文章
- 必须要懂得的密码技术
- 动辄数百TB级数据的分析平台 海量并发无压力
- js/jq基础(日常整理记录)-3-一个自定义表格
- 2022-2028年中国石油焦行业运行现状与发展态势展望报告
- C语言中无符号数和有符号数相加问题
- Android之编译jni出错解决办法
- 7、play中的文件上传
- Spring Boot自动配置与Spring 条件化配置
- MySQL中的binlog日志
- Linux基础系列4(ls,cp命令详解)
- 【转】C#实现SqlServer数据库的备份和还原
- 硬笔行书字帖3500常用字_硬笔行书教程:偏旁部首写法字帖(附例字)
- 复盘:图像饱和度计算公式和图像信噪(PSNR)比计算公式
- 美丽的花蝴蝶 动人的海豚音 天后[Mariah Carey玛丽亚·凯莉]全集
- python pandas 安装time out
- win7计算机的蓝牙,win7电脑蓝牙怎么开
- ES6之Symbol详解
- ios WKWebView之视频无法播放
- oracle11gora1435,oracle导入的问题
- 【面试-八股文】万字app测试 面试题,助你吊打面试官系列
热门文章
- Exynos4412 内核移植(二)—— 内核编译过程分析
- [react] 在React中怎么阻止事件的默认行为?
- javascript学习系列(25):数组中的substr
- React开发(113):git 操作记录
- [html] 制作一个不规则形状有哪些方法可以实现?
- [css] 请写出font属性的快捷写法
- 工作285:判断绑定逻辑
- 前端学习(2713):重读vue电商网站33之实现首页路由重定向
- 前端学习(1893)vue之电商管理系统电商系统之自定义状态列的效果
- 前端学习(1768):前端调试值之内存监控的原理和方法三