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;继续执行所述插件的下载安装流程。
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。