小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?

.版本 2

.程序集 窗口程序集1

.子程序 __启动窗口_创建完毕

模块注册 ()
_启动窗口.标题 = “自进程ID=” + 到文本 (取自进程ID ()) + “ 主线程ID=” + 到文本 (取进程主线程 (-1))

.子程序 _按钮1_被单击
.局部变量 进程信息, 进程信息
.局部变量 进程句柄1, 整数型
.局部变量 进程句柄2, 整数型

编辑框2.内容 = “”
编辑框1.内容 = 扩展路径 (编辑框1.内容)

' 运行()  进程_运行程序 () 创建进程()  进程_创建进程()
' 创建进程的参数一为 程序文件的完整路径 支持命令行方式
' 参数二可以指定新进程的运行目录,不然新进程将继承我们进程的目录作为运行目录
.如果真 (创建进程 (编辑框1.内容, , , , 进程信息))
    编辑框2.加入文本 (“进程信息.进程ID=” + 到文本 (进程信息.进程ID) + #换行符)
    编辑框2.加入文本 (“进程信息.线程ID=” + 到文本 (进程信息.线程ID) + #换行符)
    编辑框2.加入文本 (“进程信息.进程句柄=” + 到文本 (进程信息.进程句柄) + #换行符)
    编辑框2.加入文本 (“进程信息.线程句柄=” + 到文本 (进程信息.线程句柄) + #换行符)

' 若不填 进程信息 则不会得到进程与线程的ID和句柄,当然也不必再写关闭句柄
    ' 填了 进程信息 这个参数就会得到进程句柄与线程句柄,若后继需要用到,可以保存到程序集或全局变量里

关闭句柄 (进程信息.进程句柄)  ' 当不再使用这些句柄了要及时关闭掉
    关闭句柄 (进程信息.线程句柄)  ' 当不再使用这些句柄了要及时关闭掉
.如果真结束

进程句柄1 = 打开进程 (进程信息.进程ID)
信息框 (到文本 (进程句柄1), 0, )
进程句柄2 = 打开进程 (进程信息.进程ID)
信息框 (到文本 (进程句柄2), 0, )
进程_暂停进程 (进程句柄2)
信息框 (“暂停”, 0, )
进程_恢复进程 (进程句柄1)
信息框 (“恢复”, 0, )

实验表明这两个进程句柄都是有用的,这也解释了为什么不用的句柄要关闭,可以随开随用。

还有一个重要原因是:如果不及时关闭句柄,该句柄在句柄表中一直存在,则该句柄所指示的地址就一直不可用,造成资源浪费。

------------------------------------------------------------------------------------------------------------------------------------------

通过该实验对句柄有了更深入的理解。

句柄实际上是在句柄表中的。

句柄保存的是对象的地址。

对于进程ID确定的进程,他的进程地址是确定的。但是可以有多个句柄同时保存该进程地址,这也解释了为什么多个句柄都可以控制该进程。

--------------------------------------------------------------------------------------------------------------------------------------------

转载于:https://www.cnblogs.com/wanghj-dz/archive/2011/06/15/2081472.html

小实验:用创建进程()打开计算器,然后关闭进程句柄。再用打开进程(进程ID),使用两次,得到两个进程句柄。实验目的:这两个进程句柄都能控制这个进程吗?通过该试验加深对句柄的理解!!...相关推荐

  1. 打开计算机无法关闭窗口,电脑中“打开或关闭Windows功能”窗口出错无法显示怎么解决...

    ‍ 当我们想要开启或删除电脑系统中的某些应用时,需要打开控制面板中的"打开或关闭Windows功能"窗口来进行设置.但是,有的用户可能由于某些原因导致打开该窗口出错,无法显示里面 ...

  2. 《Linux C编程环境》 课程大实验 及近期练习题:计算器,复写机,目录树创建,批处理执行器,扫雷

    <Linux C编程环境> 课程大实验 及近期练习题:计算器,复写机,目录树创建,批处理执行器,扫雷 ​ 之前作业的题了,征求了老师的意见,同意我把个人解析放开公布,再提交作业已经无效了. ...

  3. 【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)

    文章目录 一.进程创建 1.1 系统调用 fork 1.2 理解 fork 的返回值 1.3 写时拷贝策略 二.进程终止 2.1 main 函数的返回值 2.2 进程退出的几种情况 2.3 进程退出码 ...

  4. 进程控制:进程的创建、终止、阻塞、唤醒和切换

    进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程.撤销已有进程.实现进程状态转换等功能.在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不 ...

  5. Linux系统编程之进程控制(进程创建,fork函数,进程中止,进程等待,程序替换)

    进程创建 fork()------复制,返回值,写时复制 vfork()创建子进程-子进程与父进程共用同一块虚拟地址空间, 为了防止调用栈混乱,因此阻塞父进程直到子进程调用exit()退出或者进行程序 ...

  6. MFC入门(一)-- 第一个简单的windows图形化界面小程序(打开计算器,记事本,查IP)

    /序 大约三年前,学过一些简单的编程语言之后其实一直挺苦恼于所写的程序总是拘泥于用的编译器,脱离了编译环境基本没运行的可行性,故而写一个在任意windows电脑下都能运行的小软件便成为了一块心病. 大 ...

  7. 进程控制(进程创建与终止 | 进程等待 | 程序替换)

    文章目录 一.进程创建 1. fork函数 2. fork创建进程 3. 写时拷贝 二.进程终止 1. 进程退出有三种情况 2. 常见进程终止方法 三.进程等待 背景(必要性) 1. 进程等待的方法 ...

  8. Node学习七 —— 创建和控制外部进程

    创建和控制外部进程 Node是被设计用来高效处理/O操作的,但正如你所见,某些类型的程序并不适用于这种模式.比如当用Node处理一个CPU密集型任务时可能会阻塞事件循环,所以应该将CPU密集任务分配给 ...

  9. 进程(查看、关闭、创建)、孤儿进程、僵尸进程、1号进程

    1.操作系统 定义:是一个安装在计算机硬件上的软件 目的:为了让计算机更加好用 功能:合理统筹管理计算机软硬件资源 管理:先描述.再组织 操作系统通过硬件驱动管理.操作各个硬件,如下图: 2.进程 操 ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装python mongoDB模块
  2. Python之父重回决策层,未来如何发展?
  3. 相对友好的 AVL Tree 教程
  4. 1.3 继承(extends)
  5. 一步步学习EF Core(1.DBFirst)
  6. inventor2019有无CAE_Inventor2019最新下载_Inventor2019正式版 - 软件帝
  7. Fedora/RHEL/openSUSE等Linux安装vivaldi——vivaldi浏览器
  8. eclipse打断点调试进入到class文件中,不显示变量值的解决办法汇总
  9. 可计算性与半可计算性 ---半可计算与半可判定
  10. CSS之vmin和vmax
  11. Delphi 字体修改一例 (转)
  12. 计算机sci检索,SCI/EI检索的国内计算机期刊
  13. 去除csdn博客上的图片水印
  14. 如何通过移动广告平台实现手游推广
  15. 计算机画画小游戏,小学生电脑绘画教学
  16. AUTOSAR架构的故事(干货)
  17. 单词拆分java与填表法_139. 单词拆分
  18. 宇视设备搜索工具_【聚焦】2019版中国纸箱行业供应商搜索引擎、全球瓦楞行业设备前沿技术报告将于4月瓦楞展现场首发!...
  19. 改进的IAYOLO---GDIP:Gated Differentiable Image Processing for Object-Detection inAdverse Conditions
  20. 数学建模——派出所选址

热门文章

  1. 张亚勤、韦乐平等综述论文:通信人工智能的下一个十年
  2. 222页斯坦福人工智能报告出炉:全球AI投资猛增680亿,北美博士学术机构就业率下降
  3. 里程碑式的数学证明,攻破著名Erdős猜想中关键障碍
  4. 院士张钹:AI奇迹短期难再现 深度学习技术潜力已近天花板
  5. Gartner 2019 年供应链技术八大趋势:AI、高级分析、物联网、RPA、自主设备、数字孪生...
  6. DARPA宣布未来五年将投资20亿美元开发下一波人工智能技术
  7. 华为正式发布5G商用芯片、5G终端!
  8. 网传阿里一总裁 PPT 被员工拍照泄漏,新规划遭曝光
  9. 摊手:工作五年我拿了两次 N+1 赔偿!
  10. 抗住 8 亿人买买买!双 11 背后黑科技大曝光