[发明专利]应用程序的平滑升级方法及装置有效
申请号: | 201611209803.3 | 申请日: | 2016-12-23 |
公开(公告)号: | CN108241496B | 公开(公告)日: | 2021-06-04 |
发明(设计)人: | 谭艳平 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65 |
代理公司: | 深圳市世纪恒程知识产权代理事务所 44287 | 代理人: | 胡海国 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用程序 平滑 升级 方法 装置 | ||
本发明提供了一种应用程序的平滑升级方法及装置。所述方法包括:当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取平滑升级指令中携带的预先编译的、应用程序升级后的可执行文件的位置信息;父进程根据平滑升级指令继续保持运行状态,并根据位置信息调取可执行文件并运行,以创建父进程的子进程;父进程获取当前运行的运行参数,并将运行参数传递至子进程,以使子进程根据运行参数创建匹配的运行环境;子进程根据运行参数创建运行环境,并在运行环境下处理新的客户端请求,以及向父进程发送退出指令;父进程根据接收到的退出指令执行退出操作,完成应用程序的平滑升级。该技术方案实现了应用程序的平滑升级。
技术领域
本发明涉及程序开发技术领域,特别是涉及一种应用程序的平滑升级方法及装置。
背景技术
编译型语言开发的程序需要编译成可执行的程序文件,然后执行程序文件来启动程序进程,进程是程序执行中的实例,当程序的所有指令执行完毕后进程会退出。当程序源代码有更新时,需要编译成新的可执行文件,并启动新的进程。
现有技术中,服务端程序通常以守护进程的方式启动执行,守护进程是一种在后台持续运行的特殊进程,即,监听一个固定的端口,等待接收、处理和响应客户端发出的请求。正常情况下进程会一直运行,当需要升级程序时,因一个端口同一时间只能被一个进程直接监听,因此需要先关闭老程序执行中的进程,然后再执行新程序启动新的进程,以实现程序的升级。显然,在上述先关闭运行中的进程再启动新进程而升级程序的过程中,存在一段时间没有进程可以处理客户端的请求,从而影响用户的网络使用体验,尤其是对于访问量较大的面向用户的产品,更容易因中断服务而给用户带来不便。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的平滑升级方法及装置。
依据本发明的一个方面,提供了一种应用程序的平滑升级方法,包括:
当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取所述平滑升级指令中携带的预先编译的、所述应用程序升级后的可执行文件的位置信息;
所述父进程根据所述平滑升级指令继续保持运行状态,并根据所述位置信息调取所述可执行文件并运行,以创建所述父进程的子进程;
所述父进程获取当前运行的运行参数,并将所述运行参数传递至所述子进程,以使所述子进程根据所述运行参数创建匹配的运行环境;
所述子进程根据所述运行参数创建运行环境,并在所述运行环境下处理新的客户端请求,以及向所述父进程发送退出指令;
所述父进程根据接收到的所述退出指令执行退出操作,完成所述应用程序的平滑升级。
可选地,所述父进程根据所述位置信息调取所述可执行文件并运行,包括:
所述父进程调用fork函数,并利用所述fork函数创建新的子进程;
利用所述新的子进程读取所述位置信息指向的可执行文件,并运行所述读取到的可执行文件。
可选地,所述运行参数包括所述父进程所监听的指定端口和/或运行资源的文件描述符,所述运行资源包括文本段、数据段、栈、堆中的至少一项。
可选地,所述子进程根据所述运行参数创建运行环境,包括:
所述子进程继承所述父进程所传递的文件描述符;
确定所述文件描述符指向的指定端口;
创建所述子进程与所述指定端口之间的监听关系,以使所述子进程能够在所述监听关系下监听所述指定端口。
可选地,所述父进程根据接收到的所述退出指令执行退出操作,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611209803.3/2.html,转载请声明来源钻瓜专利网。