一种控制进程生命期的方法和装置的制造方法

文档序号:8395760阅读:518来源:国知局
一种控制进程生命期的方法和装置的制造方法
【技术领域】
[0001] 本发明涉及计算机软件领域,具体涉及一种控制进程生命期的方法和装置。
【背景技术】
[0002] 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是操作 系统动态执行的基本单元。在传统的操作系统中,进程既是基本的分配单元,也是基本的执 行单元。每一个进程都有它自己的地址空间,包括文本区域(text region)、数据区域(data region)和堆栈(stack region),其中,文本区域存储处理器执行的代码,数据区域存储变 量和进程执行期间使用的动态分配的内存,而堆栈区域存储着活动过程调用的指令和本地 变量。
[0003] 如前所述,进程是程序的动态过程,这种动态也体现在进程具有生命期。进程管理 本质上就是对进程生命期的管理,而进程控制便是进程管理中最基本的功能,其包括创建 一个新进程、终止一个已完成的进程或者去终止一个因出现某事件而使其无法运行下去的 进程,还可负责进程运行中的状态转换。
[0004] 现有的一种控制进程生命期的方法是:在父进程启动后,启动子进程;当父进程 退出前,通知子进程退出。
[0005] 上述现有的控制进程生命期的方法固然简单,但其也存在明显的缺点。例如,由于 父进程创建子进程需要时间,因此,父进程启动后直接启动子进程会影响主进程效率。再 如,若在通知子进程退出前,父进程意外终止,则将导致子进程不能正常退出。

【发明内容】

[0006] 本发明实施例提供一种控制进程生命期的方法和装置,以提高主进程效率并使得 进程能够正常退出。
[0007] 本发明实施例提供一种控制进程生命期的方法,所述方法包括:
[0008] 启动父进程;
[0009] 在检测到子进程启动条件满足时,所述父进程开始启动子进程;
[0010] 在检测到子进程退出条件满足或者收到所述父进程发送的退出消息时,所述子进 程退出。
[0011] 本发明另一实施例提供一种控制进程生命期的装置,所述装置包括:
[0012] 父进程启动模块,用于启动父进程;
[0013] 子进程启动模块,用于在检测到子进程启动条件满足时,所述父进程开始启动子 进程;
[0014] 子进程退出模块,用于在检测到子进程退出条件满足或者收到所述父进程发送的 退出消息时,所述子进程退出。
[0015] 从上述本发明实施例可知,一方面,由于子进程的启动不是在父进程启动时即启 动,而是在父进程检测到子进程启动条件满足时才开始启动,这种有条件地启动子进程的 方式节省了父进程启动的时间,提高了父进程的效率,另一方面,由于子进程的退出是在检 测到子进程退出条件满足或父进程发送了退出消息时才进行,这种有条件地退出子进程的 方式既使得父进程意外终止时子进程也能正常退出,又使得子进程意外终止时也不影响该 子进程所承载的功能。
【附图说明】
[0016] 图1是本发明实施例提供的控制进程生命期的方法的基本流程示意图;
[0017] 图2是本发明实施例提供的控制进程生命期的装置逻辑结构示意图;
[0018] 图3是本发明另一实施例提供的控制进程生命期的装置逻辑结构示意图;
[0019]图4是本发明另一实施例提供的控制进程生命期的装置逻辑结构示意图;
[0020] 图5是本发明另一实施例提供的控制进程生命期的装置逻辑结构示意图;
[0021] 图6是本发明另一实施例提供的控制进程生命期的装置逻辑结构示意图。
【具体实施方式】
[0022] 本发明实施例提供一种控制进程生命期的方法,所述方法包括:启动父进程;在 检测到子进程启动条件满足时,所述父进程开始启动子进程;在检测到子进程退出条件满 足或者收到所述父进程发送的退出消息时,所述子进程退出。本发明实施例还提供相应的 一种控制进程生命期的装置。以下分别进行详细说明。
[0023] 本发明实施例的控制进程生命期的方法可应用于终端应用程序,例如QQ浏览器 等,其基本流程可参考图1,主要包括步骤S101至步骤S103 :
[0024] S101,启动父进程。
[0025] 所谓父进程,是用户接口(User Interface,UI)进程,主要功能是负责用户窗口操 作。在本发明实施例中,父进程的启动以创建作业内核对象为标识。例如,父进程在启动 后可创建名称为J0B0BJECT_MAINPR0CESS的作业内核对象即:::CreateJobObject (NULL, L" J0B0BJECT_MAINPR0CESS")。
[0026] S102,在检测到子进程启动条件满足时,父进程开始启动子进程。
[0027] 所谓子进程,是数据处理进程,其主要功能包括数据库存储、数据上传下载和数据 统计上报等。与现有技术中父进程启动后直接启动子进程不同,本发明实施例中,是在检测 到子进程启动条件满足时,父进程开始启动子进程。例如,当父进程有需要子进程完成的操 作时,才启动子进程。作为本发明一个实施例,在检测到子进程启动条件满足时,父进程开 始启动子进程可以包括如下S1021和S1022:
[0028] S1021,检测子进程消息窗口是否存在。
[0029] 如前所述,当父进程有需要子进程完成的操作时,才启动子进程。具体地,可以先 查找是否存在类名为L"PR0CESS_C0MMWND"的消息窗口即子进程消息窗口,具体实现如下程 序语言所示:
[0030]
【主权项】
1. 一种控制进程生命期的方法,其特征在于,所述方法包括: 启动父进程; 在检测到子进程启动条件满足时,所述父进程开始启动子进程; 在检测到子进程退出条件满足或者收到所述父进程发送的退出消息时,所述子进程退 出。
2. 根据权利要求1所述的方法,其特征在于,所述在检测到子进程启动条件满足时,所 述父进程开始启动子进程,包括: 检测子进程消息窗口是否存在; 若所述子进程消息窗口不存在,则开始启动子进程。
3. 根据权利要求2所述的方法,其特征在于,所述检测子进程消息窗口是否存在之前 进一步包括;在预设的计时周期到达时触发定时器。
4. 根据权利要求1所述的方法,其特征在于,所述在检测到子进程退出条件满足时,所 述子进程退出,包括: 在预设的计时周期到达时触发定时器; 检测所述父进程创建的作业内核对象是否存在; 若所述父进程创建的作业内核对象不存在,则所述子进程退出。
5. 根据权利要求1所述的方法,其特征在于,所述在收到所述父进程发送的退出消息 时,所述子进程退出,包括: 接收所述父进程向子进程消息窗口发送的进程退出消息; 根据所述进程退出消息,主线程退出消息循环。
6. -种控制进程生命期的装置,其特征在于,所述装置包括: 父进程启动模块,用于启动父进程; 子进程启动模块,用于在检测到子进程启动条件满足时,所述父进程开始启动子进 程; 子进程退出模块,用于在检测到子进程退出条件满足或者收到所述父进程发送的退出 消息时,所述子进程退出。
7. 根据权利要求6所述的装置,其特征在于,所述子进程启动模块包括: 第一检测单元,用于检测子进程消息窗口是否存在; 启动单元,用于若所述子进程消息窗口不存在,则开始启动子进程。
8. 根据权利要求7所述的装置,其特征在于,所述子进程启动模块还包括: 第一触发单元,用于在预设的计时周期到达时触发定时器。
9. 根据权利要求6所述的装置,其特征在于,所述子进程退出模块包括: 第二触发单元,用于在预设的计时周期到达时触发定时器; 第二检测单元,用于检测所述父进程创建的作业内核对象是否存在; 第一退出单元,用于若所述父进程创建的作业内核对象不存在,则所述子进程退出。
10. 根据权利要求6所述的装置,其特征在于,所述子进程退出模块包括: 接收单元,用于接收所述父进程向子进程消息窗口发送的进程退出消息; 第二退出单元,用于根据所述进程退出消息,主线程退出消息循环。
【专利摘要】本发明公开了一种控制进程生命期的方法和装置,以提高主进程效率并使得进程能够正常退出。所述方法包括:启动父进程;在检测到子进程启动条件满足时,所述父进程开始启动子进程;在检测到子进程退出条件满足或者收到所述父进程发送的消息时,所述子进程退出。本发明实施例提供的方法节省了父进程启动的时间,提高了父进程的效率,使得父进程意外终止时子进程也能正常退出,又使得子进程意外终止时也不影响该子进程所承载的功能。
【IPC分类】G06F9-48
【公开号】CN104714839
【申请号】CN201310687222
【发明人】尚子峰, 马学敏
【申请人】腾讯科技(深圳)有限公司
【公开日】2015年6月17日
【申请日】2013年12月12日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1