应用程序的平滑升级方法及装置制造方法及图纸

技术编号:18367161 阅读:32 留言:0更新日期:2018-07-05 08:08
本发明专利技术提供了一种应用程序的平滑升级方法及装置。所述方法包括:当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取平滑升级指令中携带的预先编译的、应用程序升级后的可执行文件的位置信息;父进程根据平滑升级指令继续保持运行状态,并根据位置信息调取可执行文件并运行,以创建父进程的子进程;父进程获取当前运行的运行参数,并将运行参数传递至子进程,以使子进程根据运行参数创建匹配的运行环境;子进程根据运行参数创建运行环境,并在运行环境下处理新的客户端请求,以及向父进程发送退出指令;父进程根据接收到的退出指令执行退出操作,完成应用程序的平滑升级。该技术方案实现了应用程序的平滑升级。

A smooth upgrading method and device for applications

The invention provides a smooth upgrading method and device for application programs. The methods include: when the running parent process receives a smooth upgrade instruction to its corresponding application, the position information of the precompiled, application upgraded executable file carried in the smooth upgrade instruction is obtained; the parent process continues to maintain the running state based on the smooth upgrade instruction, and according to the location letter. The executable file is taken and run to create a child process of the parent process; the parent process gets the running parameters of the current run and passes the running parameters to the sub process to make the sub process create a matched running environment based on the running parameters; the subprocess creates the running environment based on the running parameters and handles the new in the running environment. The client requests and sends out the exit instructions to the parent process; the parent process executes the exit operation based on the received exit instructions and completes the smooth upgrade of the application. The technology scheme achieves smooth upgrade of application programs.

【技术实现步骤摘要】
应用程序的平滑升级方法及装置
本专利技术涉及程序开发
,特别是涉及一种应用程序的平滑升级方法及装置。
技术介绍
编译型语言开发的程序需要编译成可执行的程序文件,然后执行程序文件来启动程序进程,进程是程序执行中的实例,当程序的所有指令执行完毕后进程会退出。当程序源代码有更新时,需要编译成新的可执行文件,并启动新的进程。现有技术中,服务端程序通常以守护进程的方式启动执行,守护进程是一种在后台持续运行的特殊进程,即,监听一个固定的端口,等待接收、处理和响应客户端发出的请求。正常情况下进程会一直运行,当需要升级程序时,因一个端口同一时间只能被一个进程直接监听,因此需要先关闭老程序执行中的进程,然后再执行新程序启动新的进程,以实现程序的升级。显然,在上述先关闭运行中的进程再启动新进程而升级程序的过程中,存在一段时间没有进程可以处理客户端的请求,从而影响用户的网络使用体验,尤其是对于访问量较大的面向用户的产品,更容易因中断服务而给用户带来不便。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的平滑升级方法及装置。依据本专利技术的一个方面,提供了一种应用程序的平滑升级方法,包括:当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取所述平滑升级指令中携带的预先编译的、所述应用程序升级后的可执行文件的位置信息;所述父进程根据所述平滑升级指令继续保持运行状态,并根据所述位置信息调取所述可执行文件并运行,以创建所述父进程的子进程;所述父进程获取当前运行的运行参数,并将所述运行参数传递至所述子进程,以使所述子进程根据所述运行参数创建匹配的运行环境;所述子进程根据所述运行参数创建运行环境,并在所述运行环境下处理新的客户端请求,以及向所述父进程发送退出指令;所述父进程根据接收到的所述退出指令执行退出操作,完成所述应用程序的平滑升级。可选地,所述父进程根据所述位置信息调取所述可执行文件并运行,包括:所述父进程调用fork函数,并利用所述fork函数创建新的子进程;利用所述新的子进程读取所述位置信息指向的可执行文件,并运行所述读取到的可执行文件。可选地,所述运行参数包括所述父进程所监听的指定端口和/或运行资源的文件描述符,所述运行资源包括文本段、数据段、栈、堆中的至少一项。可选地,所述子进程根据所述运行参数创建运行环境,包括:所述子进程继承所述父进程所传递的文件描述符;确定所述文件描述符指向的指定端口;创建所述子进程与所述指定端口之间的监听关系,以使所述子进程能够在所述监听关系下监听所述指定端口。可选地,所述父进程根据接收到的所述退出指令执行退出操作,包括:所述父进程停止接收新的客户端请求,并判断当前是否有未处理完成的客户端请求;若是,则继续处理所述未完成的客户端请求,并在处理完成后执行退出操作;若否,则直接执行退出操作。可选地,所述平滑升级指令包括用于触发所述父进程启动平滑升级操作的SIGUSR信号。可选地,所述子进程在所述运行环境下处理新的客户端请求,包括:所述子进程监听所述指定端口;当监听到所述指定端口接收到新的客户端请求时,通过所述指定端口接收所述新的客户端请求;处理并响应所述接收到的客户端请求。可选地,完成所述应用程序的平滑升级之后,所述方法还包括:当前操作系统的根进程领养所述子进程,使所述子进程在所述根进程下处理所述新的客户端请求,成为守护进程。依据本专利技术的另一个方面,提供了一种应用程序的平滑升级装置,包括:获取模块,适于当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取所述平滑升级指令中携带的预先编译的、所述应用程序升级后的可执行文件的位置信息;父进程执行模块,适于根据所述平滑升级指令继续保持运行状态,并根据所述位置信息调取所述可执行文件并运行,以创建所述父进程的子进程;所述父进程执行模块,还适于获取当前运行的运行参数,并将所述运行参数传递至所述子进程,以使所述子进程根据所述运行参数创建匹配的运行环境;子进程执行模块,适于根据所述运行参数创建运行环境,并在所述运行环境下处理新的客户端请求,以及向所述父进程发送退出指令;所述父进程执行模块,还适于根据接收到的所述退出指令执行退出操作,完成所述应用程序的平滑升级。可选地,所述父进程执行模块还适于:调用fork函数,并利用所述fork函数创建新的子进程;利用所述新的子进程读取所述位置信息指向的可执行文件,并运行所述读取到的可执行文件。可选地,所述运行参数包括所述父进程所监听的指定端口和/或运行资源的文件描述符,所述运行资源包括文本段、数据段、栈、堆中的至少一项。可选地,所述子进程执行模块还适于:继承所述父进程所传递的文件描述符;确定所述文件描述符指向的指定端口;创建所述子进程与所述指定端口之间的监听关系,以使所述子进程能够在所述监听关系下监听所述指定端口。可选地,所述父进程执行模块还适于:停止接收新的客户端请求,并判断当前是否有未处理完成的客户端请求;若是,则继续处理所述未完成的客户端请求,并在处理完成后执行退出操作;若否,则直接执行退出操作。可选地,所述平滑升级指令包括用于触发所述父进程启动平滑升级操作的SIGUSR信号。可选地,所述子进程执行模块还适于:监听所述指定端口;当监听到所述指定端口接收到新的客户端请求时,通过所述指定端口接收所述新的客户端请求;处理并响应所述接收到的客户端请求。可选地,所述装置还包括:领养模块,适于当前操作系统的根进程领养所述子进程,使所述子进程在所述根进程下处理所述新的客户端请求,成为守护进程。采用本专利技术实施例提供的技术方案,在对应用程序进行升级时,正在运行的父进程能够获取平滑升级指令中携带的预先编译的应用程序升级后的可执行文件的位置信息,并继续保持父进程的运行状态,同时根据执行文件的位置信息调取可执行文件并运行,以创建父进程的子进程,然后父进程将当前运行的运行参数传递至子进程,使得子进程能够根据该运行参数创建匹配的运行环境,并在所创建的运行环境下处理新的客户端请求,同时向父进程发送退出指令,使得父进程能够执行退出操作,最终完成应用程序的平滑升级。可见,该技术方案在升级应用程序的过程中,即使只有一个监听端口,也无需关闭正在运行的父进程,而是以父子进程的运行状态的更替来实现应用程序的平滑升级,从而避免了因关闭父进程后导致中间一段时间没有进程可以处理客户端请求的问题,使得客户端发送的请求自始至终都能够被很好地处理,因而提高了用户在网络使用中的体验度。进一步地,本专利技术实施例中,当父进程根据接收到的退出指令执行退出操作时,还能够判断当前是否有未处理完成的客户端请求,若是,则父进程继续处理未完成的客户端请求,并在处理完成后执行退出操作,从而使得未处理完成的客户端请求不会因应用程序的升级而中断,避免了中断处理客户端请求给用户带来的不便。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。附图说明通过阅读下文优选实施方式的详细描述,本文档来自技高网...
应用程序的平滑升级方法及装置

【技术保护点】
1.一种应用程序的平滑升级方法,包括:当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取所述平滑升级指令中携带的预先编译的、所述应用程序升级后的可执行文件的位置信息;所述父进程根据所述平滑升级指令继续保持运行状态,并根据所述位置信息调取所述可执行文件并运行,以创建所述父进程的子进程;所述父进程获取当前运行的运行参数,并将所述运行参数传递至所述子进程,以使所述子进程根据所述运行参数创建匹配的运行环境;所述子进程根据所述运行参数创建运行环境,并在所述运行环境下处理新的客户端请求,以及向所述父进程发送退出指令;所述父进程根据接收到的所述退出指令执行退出操作,完成所述应用程序的平滑升级。

【技术特征摘要】
1.一种应用程序的平滑升级方法,包括:当正在运行的父进程接收对其对应的应用程序的平滑升级指令时,获取所述平滑升级指令中携带的预先编译的、所述应用程序升级后的可执行文件的位置信息;所述父进程根据所述平滑升级指令继续保持运行状态,并根据所述位置信息调取所述可执行文件并运行,以创建所述父进程的子进程;所述父进程获取当前运行的运行参数,并将所述运行参数传递至所述子进程,以使所述子进程根据所述运行参数创建匹配的运行环境;所述子进程根据所述运行参数创建运行环境,并在所述运行环境下处理新的客户端请求,以及向所述父进程发送退出指令;所述父进程根据接收到的所述退出指令执行退出操作,完成所述应用程序的平滑升级。2.根据权利要求1所述的方法,其中,所述父进程根据所述位置信息调取所述可执行文件并运行,包括:所述父进程调用fork函数,并利用所述fork函数创建新的子进程;利用所述新的子进程读取所述位置信息指向的可执行文件,并运行所述读取到的可执行文件。3.根据权利要求1或2所述的方法,其中,所述运行参数包括所述父进程所监听的指定端口和/或运行资源的文件描述符,所述运行资源包括文本段、数据段、栈、堆中的至少一项。4.根据权利要求3所述的方法,其中,所述子进程根据所述运行参数创建运行环境,包括:所述子进程继承所述父进程所传递的文件描述符;确定所述文件描述符指向的指定端口;创建所述子进程与所述指定端口之间的监听关系,以使所述子进程能够在所述监听关系下监听所述指定端口。5.根据权利要求1所述的方法,其中,所述父进程根据接收到的所述退出指令执行退出操作,包括:所述父进程停止接收新的客户端请求,并判断当前是否有未处理完成的客户端请求;若是,则继续处理所述未完成的客户...

【专利技术属性】
技术研发人员:谭艳平
申请(专利权)人:北京奇虎科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1