插件下载方法及装置制造方法及图纸

技术编号:18165323 阅读:42 留言:0更新日期:2018-06-09 11:19
本发明专利技术公开了一种插件下载方法及装置,属于计算机技术领域。所述方法包括:当第二进程请求下载安装插件时,检测与插件对应的进程ID文件锁中是否存储有进程ID;进程ID文件锁用于对存储的进程ID所对应的进程上锁,进程ID用于标识进程;当进程ID文件锁存储有第一进程的进程ID时,根据第一进程的进程ID向操作系统查询第一进程是否存在;当第一进程不存在时,确定第一进程异常退出,将进程ID文件锁中存储的进程ID修改为第二进程的进程ID;继续执行插件的下载安装流程。本发明专利技术通过利用将进程ID写入进程ID文件锁的方式对进程上锁,使得在第一进程异常退出时,第二进程能够继续执行插件的下载安装流程,解决了死锁的问题。

Plug-in download method and device

The invention discloses a plug-in downloading method and a device, belonging to the computer technology field. The methods described include whether a process ID is stored in the process ID file lock corresponding to the plug-in when the second process request is downloaded, and the process ID file lock is used to lock the process corresponding to the stored process ID, and the process ID is used to identify the process; when the process ID file lock stores the process ID with the first process, base on the process ID file lock, The process ID of the first process queries the operating system for the existence of the first process; when the first process does not exist, determine the first process out of the process, modify the process ID stored in the process ID file lock to the process ID of the second process; continue to execute the download and installation process of the plug-in. By using process ID to lock the process ID file lock, the second process can continue to execute the download and installation process of the plug-in when the first process exits, and the problem of deadlock is solved.

【技术实现步骤摘要】
插件下载方法及装置
本专利技术实施例涉及计算机
,特别涉及一种插件下载方法及装置。
技术介绍
为了避免安装包过大,应用程序的一些扩展功能是通过动态下载插件的方式实现的。以安卓系统为例,插件是遵循一定规范的应用程序接口编写出来的程序,用来在应用程序的原始功能基础上实现扩展功能,插件必须依赖于应用程序才能运行,仅靠插件是无法正常运行的。当一个应用程序中有多个进程需要使用到同一个插件提供的功能,而该插件尚未下载安装时,会出现多个进程同时下载安装该插件的情况。由于在同一应用程序中同一个插件的下载安装路径相同,若是两个进程同时下载同一个插件,会出现下载错误的问题。现有技术中,通过文件锁机制来避免多进程并行下载引起下载错误的问题。具体来讲,对各个进程提供文件锁,该文件锁具有对进程上锁的能力,获得文件锁的第一进程在上锁后执行插件下载安装流程,没有获得文件锁的第二进程被挂起,即处于等待状态。由于从第一进程开始上锁,到第一进程的插件下载安装流程执行完毕的过程中,其余等待的第二进程都自动被挂起,若是第一进程在执行过程中出错异常退出,则第一进程不会解锁文件锁,等待的第二进程持续被挂起,第二进程无法继续执行或重新执行插件下载安装流程,从而发生死锁的问题。
技术实现思路
为了解决现有技术中上锁的进程在执行过程中异常退出后,等待的进程持续被挂起,无法继续执行或重新执行插件的下载安装流程,从而发生死锁的问题,本专利技术实施例提供了一种插件下载方法及装置。所述技术方案如下:第一方面,提供了一种插件下载方法,所述方法包括:当第二进程请求下载安装插件时,检测与所述插件对应的进程ID文件锁中是否存储有进程ID;所述进程ID文件锁用于对存储的所述进程ID所对应的进程上锁,所述进程ID用于标识所述进程;当所述进程ID文件锁存储有第一进程的进程ID时,根据所述第一进程的进程ID向操作系统查询所述第一进程是否存在;当所述第一进程不存在时,确定所述第一进程异常退出,将所述进程ID文件锁中存储的所述进程ID修改为所述第二进程的进程ID;继续执行所述插件的下载安装流程。第二方面,提供了一种插件下载装置,所述装置包括:第一检测模块,用于当第二进程请求下载安装插件时,检测与所述插件对应的进程ID文件锁中是否存储有进程ID;所述进程ID文件锁用于对存储的所述进程ID所对应的进程上锁,所述进程ID用于标识所述进程;查询模块,用于当所述第一检测模块检测到所述进程ID文件锁存储有第一进程的进程ID时,根据所述第一进程的进程ID向操作系统查询所述第一进程是否存在;第一修改模块,用于当所述查询模块查询到所述第一进程不存在时,确定所述第一进程异常退出,将所述进程ID文件锁中存储的所述进程ID修改为所述第二进程的进程ID;下载模块,用于继续执行所述插件的下载安装流程。本专利技术实施例提供的技术方案带来的有益效果是:通过利用将第一进程的进程ID写入进程ID文件锁的方式对第一进程上锁,使得需要下载同一插件的第二进程能够根据进程ID文件锁中的进程ID到操作系统中查找第一进程是否存在,若不存在,表明第一进程已经在中途异常退出,则重新将第二进程的进程ID写入上锁,继续执行插件的下载安装流程,避免了上锁的第一进程异常退出后,其他的第二进程被挂起而无法继续执行插件的下载安装流程的情况,从而解决了现有技术中的文件锁会死锁的问题。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术一个实施例中提供的插件下载方法的方法流程图;图2A是本专利技术另一个实施例中提供的插件下载方法的方法流程图;图2B是本专利技术一个实施例中提供的第二进程继续执行插件的下载安装流程的方法流程图;图2C是本专利技术一个实施例中提供的示意性的插件下载方法的原理图;图3是本专利技术一个实施例中提供的插件下载装置的结构方框图;图4是本专利技术部分实施例中提供的插件下载装置的结构方框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。为了便于对本专利技术各实施例的理解,首先对相关名词进行解释:插件:是遵循一定规范的应用程序接口编写出来的程序,用来实现应用程序的扩展功能。进程ID:用于在操作系统的多个进程中唯一标识进程。进程ID文件锁:用于存储进程ID,并对存储的进程ID所对应的进程上锁。具体地,当进程ID被写入时,进程ID文件锁对该进程ID对应的进程上锁,当进程ID被删除或被修改时,进程ID文件锁对进程ID对应的进程解锁。宿主应用程序:具有下载安装插件的权限的应用程序。当下载安装一个插件后,宿主应用程序在原始功能基础上,获得扩展的功能。非宿主应用程序:不具有下载安装插件的权限的应用程序,但能够通过共享宿主应用程序已经安装的插件,获得扩展的功能。共享内存:是不同的进程实现进程间通信的存储空间。当一个进程在共享内存中写入数据后,另一个进程能够读取到该共享内存中的数据。图1是本专利技术一个实施例中提供的插件下载方法的方法流程图。本实施例以该插件下载方法应用于安装有宿主应用程序的终端中来举例说明,或者,应用于安装有宿主应用程序和非宿主应用程序的终端中来举例说明。如图1所示,该插件下载方法包括:步骤101,当第二进程请求下载安装插件时,检测与该插件对应的进程ID文件锁中是否存储有进程ID。进程ID文件锁用于对存储的进程ID所对应的进程上锁,进程ID用于标识该进程。一个插件对应一个进程ID文件锁,进程ID文件锁的命名通常与插件相关,比如使用插件的K值来命名对应的进程ID文件锁。第一个下载安装该插件的进程通常需要创建与插件对应的进程ID文件锁,并将进程ID文件锁按照预定的命名规则命名,之后需要下载该插件的其它进程可以根据进程ID文件锁的名称查找到对应的进程ID文件锁。进程ID文件锁中存储有进程ID,表明进程ID文件锁中存在已经上锁的进程。若进程ID文件锁中存储有预定值(比如-1),则表明已经有第一进程将插件下载安装完毕,并且正常退出,当第二进程需要使用到该插件时,可以直接使用已经安装的插件,而不需要再次下载安装。步骤102,当进程ID文件锁存储有第一进程的进程ID时,根据第一进程的进程ID向操作系统查询第一进程是否存在。在正常情况下,第一进程在下载安装插件时,将第一进程的进程ID写入进程ID文件锁,由进程ID文件锁对第一进程上锁;第一进程在下载安装完毕后,将第一进程的进程ID从进程ID文件锁进行擦除,由进程ID文件锁对第一进程解锁。但是如果第一进程中途异常退出,则该第一进程的进程ID有可能会保留在进程ID锁中,未被及时擦除。当进程ID文件锁中存储有第一进程的进程ID时,第二进程会继续根据第一进程ID向操作系统查询第一进程是否存在,从而确定第一进程是否处于正常运行状态。如果第一进程在操作系统中存在,则表明第一进程处于正常运行状态,第二进程退出;如果第一进程在操作系统中不存在,则表明第一进程在中途异常退出,进入步骤103。步骤103,当第一进程不存在时,确定第一进程异常退出,将进程ID文件锁中存储的进程ID修改本文档来自技高网...
插件下载方法及装置

【技术保护点】
一种插件下载方法,其特征在于,所述方法包括:当第二进程请求下载安装插件时,检测与所述插件对应的进程ID文件锁中是否存储有进程ID;所述进程ID文件锁用于对存储的所述进程ID所对应的进程上锁,所述进程ID用于标识所述进程;当所述进程ID文件锁存储有第一进程的进程ID时,根据所述第一进程的进程ID向操作系统查询所述第一进程是否存在;当所述第一进程不存在时,确定所述第一进程异常退出,将所述进程ID文件锁中存储的所述进程ID修改为所述第二进程的进程ID;继续执行所述插件的下载安装流程。

【技术特征摘要】
1.一种插件下载方法,其特征在于,所述方法包括:当第二进程请求下载安装插件时,检测与所述插件对应的进程ID文件锁中是否存储有进程ID;所述进程ID文件锁用于对存储的所述进程ID所对应的进程上锁,所述进程ID用于标识所述进程;当所述进程ID文件锁存储有第一进程的进程ID时,根据所述第一进程的进程ID向操作系统查询所述第一进程是否存在;当所述第一进程不存在时,确定所述第一进程异常退出,将所述进程ID文件锁中存储的所述进程ID修改为所述第二进程的进程ID;继续执行所述插件的下载安装流程。2.根据权利要求1所述的方法,其特征在于,在所述检测与所述插件对应的进程ID文件锁中是否存储有进程ID之前,所述方法还包括:检测是否存在与所述插件对应的所述进程ID文件锁;当存在与所述插件对应的所述进程ID文件锁时,执行所述检测与所述插件对应的进程ID文件锁中是否存储有进程ID的步骤;当不存在与所述插件对应的所述进程ID文件锁时,创建所述进程ID文件锁,并将所述第二进程的进程ID写入所述进程ID文件锁。3.根据权利要求2所述的方法,其特征在于,在所述检测是否存在与所述插件对应的所述进程ID文件锁之前,所述方法还包括:检测与所述第二进程对应的应用程序是否为宿主应用程序,所述宿主应用程序具有下载安装所述插件的权限;当与所述第二进程对应的应用程序为所述宿主应用程序时,检测所述插件是否已经安装在所述宿主应用程序中;当所述插件尚未安装在所述宿主应用程序中时,执行所述检测是否存在与所述插件对应的所述进程ID文件锁的步骤。4.根据权利要求3所述的方法,其特征在于,在所述检测是否存在与所述插件对应的所述进程ID文件锁之后,所述方法还包括:当与所述第二进程对应的应用程序为非宿主应用程序时,检测所述插件是否已经安装在宿主应用程序中;当所述插件已经安装在所述宿主应用程序中时,从所述宿主应用程序中共享所述插件。5.根据权利要求1至4任一所述的方法,其特征在于,所述继续执行所述插件的下载安装流程,包括:通过共享内存获取所述第一进程的插件下载安装进度,所述共享内存是所述第一进程和所述第二进程实现进程间通信的存储空间;根据获取的所述插件下载安装进度继续下载安装所述插件;将所述插件的下载安装进度记录到所述共享内存中。6.根据权利要求1至4所述的方法,其特征在于,在所述继续执行所述插件的下载安装流程之后,还包括:当所述下载安装流程执行完毕时,删除所述进程ID文件锁中的所述第二进程的进程ID;或者,当所述下载安装流程执行完毕时,将所述进程ID文件锁中的所述第二进程的进程ID修改为预定值,所述预定值用于表示所述下载安装流程执行完毕。7.一种插件下载装置,其特征在于,所述装置包括:第一检测模块,用于当第二进程请求下载安装插件时,检测与所述插件对...

【专利技术属性】
技术研发人员:李龙彬
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

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

1