CN111723016A - 文件关闭方法、装置、电子设备和存储介质 - Google Patents
文件关闭方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111723016A CN111723016A CN202010590714.8A CN202010590714A CN111723016A CN 111723016 A CN111723016 A CN 111723016A CN 202010590714 A CN202010590714 A CN 202010590714A CN 111723016 A CN111723016 A CN 111723016A
- Authority
- CN
- China
- Prior art keywords
- function
- file
- target file
- target
- calling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 230000006870 function Effects 0.000 claims description 296
- 238000010276 construction Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012163 sequencing technique Methods 0.000 claims description 6
- 238000004891 communication Methods 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3628—Software debugging of optimised code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种文件关闭方法、装置、电子设备和存储介质,涉及计算机技术领域。在接收函数调用指令后,根据函数调用指令调用目标文件对应的类函数,根据类函数中的构造函数打开目标文件,并获得目标文件的句柄,在函数调用指令执行完毕时,根据类函数中的析构函数关闭目标文件以及目标文件的句柄,如此,便可通过函数调用操作文件,在打开文件后,实现文件以及文件句柄的自动关闭,无需考虑关闭文件时,导致文件的泄漏,从源头避免文件的泄漏,从而降低了维护成本。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种文件关闭方法、装置、电子设备和存储介质。
背景技术
随着计算机和通信技术的飞速发展,软件已经成为信息化建设的重要基础设施,软件核心源代码的泄漏可能带给IT企业巨大的损失。对于嵌入式系统级芯片(Soc)产品而言,代码的编辑成本和维护成本相当的高,且由于其对文件的操作非常广泛,因此在进行大量文件操作的时候,就很容易会出现文件泄露的问题,而一但出现泄漏问题又很难分析到泄漏点,进一步提高了维护成本。
发明内容
基于上述研究,本发明提供了一种文件关闭方法、装置、电子设备和存储介质,以改善上述问题。
本发明的实施例可以这样实现:
第一方面,实施例提供一种文件关闭方法,应用于电子设备,所述方法包括:
接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄;
在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄;其中,每个所述目标文件对应创建有类函数,其中所述类函数中包括构造函数以及析构函数。
在可选的实施方式中,所述根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄的步骤包括:
根据所述构造函数,调用系统库open函数,根据所述系统库open函数打开所述目标文件,并获得所述目标文件的句柄;
所述根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄的步骤包括:
根据所述析构函数,调用系统库close函数,根据所述系统库close函数关闭所述目标文件以及所述目标文件的句柄。
在可选的实施方式中,所述方法还包括:
记录每次打开所述目标文件的函数调用信息,并将所述函数调用信息存储于数据表中,并在关闭所述目标文件时,将所述目标文件的函数调用信息从所述数据表中删除。
在可选的实施方式中,所述方法还包括:
对存储于所述数据表中的函数调用信息进行统计,得到所有的函数调用信息的调用次数;
判断所述调用次数是否大于第一预设阈值,若大于,判定存在文件泄漏风险,并对所有的函数调用信息进行归类排序,将归类排序后的函数调用信息进行导出,并进行风险提醒。
在可选的实施方式中,所述方法还包括:
对所述数据表中的函数调用信息所对应的目标文件进行统计,得到所有打开的目标文件的个数;
判断所述打开的目标文件的个数是否大于预设文件阈值数,若大于,则进行报警。
在可选的实施方式中,在对所有的函数调用信息进行归类排序后,所述方法还包括:
针对同一函数调用信息,判断该函数调用信息的调用次数是否大于第二预设阈值,若大于,判定该函数调用信息所对应的目标文件存在泄漏风险,并进行提醒。
在可选的实施方式中,所述类函数中还包括查询函数,所述方法还包括:
根据所述查询函数,对所述数据表中的函数调用信息进行查询,获得所述数据表中的所有函数调用信息以及所有函数调用信息所对应的目标文件;
对所有函数调用信息进行归类排序,根据归类排序后的所有函数调用信息分析文件泄漏风险,并将归类排序后的所有函数调用信息以及所有函数调用信息所对应的目标文件进行导出。
第二方面,实施例提供一种文件关闭装置,应用于电子设备,所述装置包括文件打开模块以及文件关闭模块;
所述文件打开模块用于接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄;
所述文件关闭模块用于在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄;其中,每个所述目标文件对应创建有类函数,其中所述类函数中包括构造函数以及析构函数。
第三方面,实施例提供一种电子设备,包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述电子设备执行前述实施方式中任意一项所述的文件关闭方法。
第四方面,实施例一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现前述实施方式中任意一项所述的文件关闭方法。
本发明实施例提供的文件关闭方法、装置、电子设备和存储介质,在接收函数调用指令后,根据函数调用指令调用目标文件对应的类函数,根据类函数中的构造函数打开目标文件,并获得目标文件的句柄,在函数调用指令执行完毕时,根据类函数中的析构函数关闭目标文件以及目标文件的句柄,如此,便可通过函数调用操作文件,在打开文件后,实现文件以及文件句柄的自动关闭,无需考虑关闭文件时,导致文件的泄漏,从源头避免文件的泄漏,从而降低了维护成本。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例所提供的电子设备的一种方框示意图。
图2为本发明实施例所提供的文件关闭方法的一种流程示意图。
图3为本发明实施例所提供的文件关闭方法的另一种流程示意图。
图4为本发明实施例所提供的文件关闭方法的又一种流程示意图。
图5为本发明实施例所提供的文件关闭方法的又一种流程示意图。
图6为本发明实施例所提供的文件关闭装置的一种方框示意图。
图标:100-电子设备;10-文件关闭装置;11-文件打开模块;12-文件关闭模块;20-存储器;30-处理器;40-通信单元。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,需要说明的是,若出现术语“上”、“下”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,若出现术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
需要说明的是,在不冲突的情况下,本发明的实施例中的特征可以相互结合。
对于嵌入式Soc产品而言,代码的编辑成本和维护成本相当的高,特别是嵌入式产品的疑难问题,其具有概率低,极难复现,而且复杂多变的特点,导致其解决难度相当大。且针对于文件泄露情况,亦经常出现,当在大量打开文件后,若未正常关闭,则可能会文件发生泄漏,而一但出文件泄漏情况,又很难分析到泄漏点,提高了调试以及维护成本。
基于上述研究,本实施例提供一种文件关闭方法,以改善上述问题。
请参考图1,本实施例提供的文件关闭方法应用于图1所示的电子设备100,由图1所示的电子设备100执行本实施例所提供的文件关闭方法。如图1所示,本实施例所提供的电子设备100包括文件关闭装置10、存储器20、处理器30以及通信单元40。
所述存储器20、处理器30及通信单元40各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述文件关闭装置10包括至少一个可以软件或固件(firmware)的形式存储于所述存储器20中或固化在所述电子设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器30用于执行所述存储器20中存储的可执行模块,例如所述文件关闭装置10所包括的软件功能模块及计算机程序等。
其中,所述存储器20可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器20用于存储程序或者数据。
所述处理器30可以是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(DSP))、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述通信单元40用于通过网络建立所述电子设备100与其他电子设备之间的通信连接,并用于通过所述网络收发数据。
可以理解,图1所示的结构仅为示意,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
基于上述电子设备100的实现架构,请结合参阅图2,图2为本实施例所提供的文件关闭方法的流程示意图。下面对图2所示的流程示意图进行详细阐述。
步骤S10:接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄。
步骤S20:在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄。
在本实施例中,电子设备存储有多个文件,其中,待打开的文件则为目标文件,在打开目标文件之前,每个目标文件对应创建有一类函数,创建的类函数中包括了构造函数以及析构函数。
可选的,可通过以下代码创建类函数:
int func(){
A b=A("/data/file.txt”);//创建对象class A,b.fd为文件的句柄
return 0;
}
为了便于函数的调用,本实施例中,在针对于每个目标文件创建类函数之后,可对创建得到的类函数进行封装,以便调用。
在对目标文件创建并封装好类函数后,在打开目标文件时,只需要通过函数调用指令,调用已封装好的类函数,便可以打开文件。具体地,在接收函数调用指令,调用已封装好的类函数,根据类函数中的构造函数打开目标文件,并获得目标文件的句柄。而在函数调用指令执行完毕后而退出时,类函数中的析构函数自动关闭获得的目标文件的句柄,从而关闭文件,避免了操作文件时未关闭文件导致的句柄泄露。本实施例所提供的文件关闭方法,可通过调用一次函数操作文件,就可以实现自动打开文件与关闭文件,无需考虑文件泄露的问题,防止了代码逻辑漏洞,导致的泄露问题。
作为一种可选的实施方式,在本实施例中,电子设备可采用嵌入式linux系统平台,以便于调试,可以理解地,在本实施例中,还可以采用其他系统平台,例如Unix系统、Windows系统等等,具体地,可根据实际需求而设置。
进一步的,基于嵌入式linux系统平台,在本实施例中,所述根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄的步骤包括:
根据所述构造函数,调用系统库open函数,根据所述系统库open函数打开所述目标文件,并获得所述目标文件的句柄。
其中,在打开目标文件,调用类函数时,类函数中的构造函数则去调用系统库open函数,而系统库open函数则通过目标文件的路径去打开目标文件,并获得目文件的句柄。
同样地,所述根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄的步骤包括:
根据所述析构函数,调用系统库close函数,根据所述系统库close函数关闭所述目标文件以及所述目标文件的句柄。
其中,在当函数调用指令执行完毕后,类函数中的析构函数,则调用系统库close函数,根据系统库close函数关闭目标文件以及目标文件的句柄,以避免文件泄漏。
可选的,可通过以下代码实现目标文件的打开和关闭:
在本实施例中,基于嵌入式linux系统平台,可多个进程并行处理,因此,可打开的文件数量众多,而在其中,可能存在通过其他方式打开的文件,例如,通过直接调用系统库open函数打开文件,或者通过其他的指令函数打开文件,而通过这些方式打开文件,则可能存在泄漏风险,为了对泄漏风险进行监测,在可选的实施方式中,本实施所提供的文件关闭方法还包括:
记录每次打开所述目标文件的函数调用信息,并将所述函数调用信息存储于数据表中,并在关闭所述目标文件时,将所述目标文件的函数调用信息从所述数据表中删除。
其中,函数调用信息则包括调用函数、被调用函数以及通过调用函数与被调用函数打开的目标文件,例如,进程A中,通过A函数调用系统库open函数打开目标文件a,则A函数为调用函数,系统库open函数为被调用函数,即函数调用信息为A函数-系统库open函数-目标文件a;又例如,进程B中,通过函数调用指令调用类函数打开与该类函数对应的目标文件b,则函数调用指令为调用函数,类函数为被调用函数,即函数调用信息为函数调用指令-类函数-目标文件b。
本实施例通过记录每次打开目标文件的函数调用信息,则可对每次打开目标文件的源头进行追溯,以更加方便快捷地查询文件句柄泄露,避免查询代码的复杂化。
在本实施例中,在记录每次打开目标文件的函数调用信息后,则将函数调用信息存储于数据表中,并在关闭目标文件,将该目标文件对应的函数调用信息从数据表中删除。可选的,为了便于查找或统计,存储于数据表中的函数调用信息的存储数据结构可为调用函数-被调用函数-目标文件,如此,便可以统一的数据结构存储函数调用信息。
作为一种可选的实施方式,在本实施例中,可通过系统库对目标文件的函数调用信息进行记录,并将其记录得到的函数调用信息存储于数据表中,所述数据表可以为哈希数据结构表,其中,每一个进程对应于一个数据表。
为了进一步检测文件句柄的泄露,请结合参阅图3,在本实施例中,所述方法还包括步骤S30至步骤S32。
步骤S30:对存储于所述数据表中的函数调用信息进行统计,得到所有的函数调用信息的调用次数。
步骤S31:判断所述调用次数是否大于第一预设阈值。
若大于,执行步骤S32。
步骤S32:判定存在文件泄漏风险,并对所有的函数调用信息进行归类排序,将归类排序后的函数调用信息进行导出,并进行风险提醒。
其中,对存储于数据表中的函数调用信息进行统计,则可对当前处于打开状态的目标文件进行统计以及对数据表中所有函数调用信息的调用次数进行统计,即函数调用信息中所包含的被调用函数的调用次数。
在对数据表中的函数调用信息进行统计,得到数据表中所有函数调用信息的调用次数后,判断数据表中所有函数调用信息的调用次数是否大于第一预设阈值,若小于等于,则判定未存在文件泄漏风险。若大于,则判定存在文件泄漏风险,并对所有的函数调用信息进行归类排序,将归类排序后的函数调用信息进行导出,并进行风险提醒。
例如,设定总的调用次数为100次,第一预设阈值为调用80次,而数据表中的函数调用信息有80次,若此时存在函数调用去打开目标文件,从而产生函数调用信息,在将函数调用信息存储于数据表中后,函数调用信息的调用次数则为81次,大于第一预设阈值80次,则判定数据表中函数调用信息对应的目标文件中存在泄漏风险。
在判定存在泄漏风险后,则将数据表中的所有的函数调用信息进行归类排序。可选的,在本实施例中,可以函数调用信息中的调用函数和被调用函数作为关键字进行归类。例如,数据表中的某函数调用信息包括A调用函数和B被调用函数,则以A调用函数和B被调用函数为关键字,对数据表中所有的函数调用信息进行归类,同理,对于数据表中的其他函数调用信息也以此进行归类,如此,便能对每一种函数调用信息进行归类,并得到每一种函数调用信息的调用次数。
在对数据表中的所有函数调用信息进行归类后,对每一种的函数调用信息进行排序。可选的,在本实施例中,可以每一种的函数调用信息的调用次数进行排序。例如,A函数调用信息包括A调用函数和B被调用函数,A函数调用信息的调用次数为10次,即通过A调用函数调用B被调用函数的调用次数为10次,C函数调用信息包括C调用函数和B被调用函数,C函数调用信息的调用次数为15次,即C调用函数调用B被调用函数的调用次数为15次,A函数调用信息和C函数调用信息以次数进行排序,即以10次和15次进行排序。可选的,可以以调用次数的升序进行排序,也可以以调用次数的降序进行排序,本实施例不做限制。
在对所有的函数调用信息进行归类排序,将归类排序后的函数调用信息以日志的形式进行导出,并进行风险提醒,即进行日志提醒。
为了避免打开的文件数太多,对进程造成影响以及造成文件的泄漏,在本实施例中,请结合参阅图4,所述方法还包括步骤S40至步骤S42。
步骤S40:对所述数据表中的函数调用信息所对应的目标文件进行统计,得到所有打开的目标文件的个数。
步骤S41:判断所述打开的目标文件的个数是否大于预设文件阈值数。
若大于,执行步骤S42。
步骤S42:进行报警。
在本实施例中,在记录每次打开目标文件的函数调用信息时,还可将对应的目标文件一并进行记录,如此,便可以根据数据表中的函数调用信息,对打开的目标文件进行统计,得到所有打开的目标文件的个数。在得到所有的打开的目标文件的个数后,判断打开的目标文件的个数是否大于预设文件阈值数,若大于,则判定存在泄露风险,并进行日志报警。例如,某进程设定预设文件阈值数为1000,即最大能打开的目标文件数为1000,若打开的目标文件数大于1000,则判定存在泄漏点,系统日志提醒可能泄露的点,然后结合日志分析代码,确认是否真实泄露,大大降低了泄漏风险。
作为一种可选的实施方式,为了提高检测的准确性,在对所有的函数调用信息进行归类排序后,所述方法还包括:
针对同一函数调用信息,判断该函数调用信息的调用次数是否大于第二预设阈值,若大于,判定该函数调用信息所对应的目标文件存在泄漏风险,并进行提醒。
其中,在对所有的函数调用信息进行归类排序后,得到每一种函数调用信息的调用次数,针对每一种函数调用信息,判断该函数调用信息的调用次数是否大于第二预设阈值,若大于,判定该函数调用信息被多次重复调用,且该函数调用信息所对应的目标文件存在泄漏风险,即通过该函数调用信息打开的目标文件存在泄漏风险。例如,设定第二预设阈值为60,在对所有的函数调用信息归类排序后,存在某函数调用信息的调用次数大于60,则判定该函数调用信息多次重复调用,该函数调用信息对应的目标文件存在泄漏风险。在判定对应的目标文件存在泄漏风险后,则进行日志提醒,然后通过日志代码确认是否真正句柄泄露,进而提高了检测的准确性。
需要说明的是,在本实施例中,可在所有的函数调用信息的调用次数大于第一预设阈值,对所有的函数调用信息进行归类排序后,判断是否存在大于第二预设阈值的同一函数调用信息,也可单独对所有的函数调用信息进行归类排序后,判断是否存在大于第二预设阈值的同一函数调用信息,具体地判断方式,本实施不做限定。
作为一种可选的实施方式,相较于上述所述的自动查询数据表中的函数调用信息,本实施例还可以通过函数调用的方式来查询数据表中的函数调信息,以分析文件泄漏点。请结合参阅图5,所述方法还包括步骤S50至步骤S51。
步骤S50:根据所述查询函数,对所述数据表中的函数调用信息进行查询,获得所述数据表中的所有函数调用信息以及所有函数调用信息所对应的目标文件。
步骤S51:对所有函数调用信息进行归类排序,根据归类排序后的所有函数调用信息分析文件泄漏风险,并将归类排序后的所有函数调用信息以及所有函数调用信息所对应的目标文件进行导出。
在本实施例中,所述类函数中还包括查询函数,进而可通过调用查询函数对数据表中的函数调用信息进行查询,以获得数据表中的所有函数调用信息以及所有函数调用信息所对应的目标文件。
在获得数据表中的所有函数调用信息后,对所有函数调用信息进行归类排序,根据归类排序后的所有函数调用信息分析文件泄漏风险,例如,对函数调用信息调用次数多的进行分析以及对同一文件被多次打开进行分析等。
在根据归类排序后的所有函数调用信息分析文件泄漏风险后,将归类排序后的所有函数调用信息以及所有函数调用信息所对应的目标文件进行导出,进行日志提醒,从而减少泄漏风险。
作为一种可选的实施方式,本实施例还可以通过添加系统查询泄漏接口对数据表中的函数调用信息进行查询,可扩展性高。
本实施例所提供的文件关闭方法,通过调用一次函数操作文件,就可以实现自动打开文件与关闭文件,无需考虑文件泄露的问题,防止了代码逻辑漏洞,导致的泄露问题。通过自动化检测函数调用信息进行日志提醒,以及设置打开文件最大个数提醒,大大降低了泄漏风险,且实用性广阔、代码调用简单,效率高。并且,还可通过函数调用的方式来查询数据表中的函数调信息分析文件泄漏点,提高了其便捷性。
在上述基础上,请结合参阅图6,本实施例还提供一种文件关闭装置10,所述文件关闭装置10,应用于电子设备,所述装置包括文件打开模块11以及文件关闭模块12。
所述文件打开模块11用于接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄。
所述文件关闭模块12用于在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄;其中,每个所述目标文件对应创建有类函数,其中所述类函数中包括构造函数以及析构函数。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的文件关闭装置10的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
在上述基础上,本实施例提供一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现前述实施方式中任意一项所述的文件关闭方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述存储介质的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
综上,本实施例提供的文件关闭方法、装置、电子设备和存储介质,在接收函数调用指令后,根据函数调用指令调用目标文件对应的类函数,根据类函数中的构造函数打开目标文件,并获得目标文件的句柄,在函数调用指令执行完毕时,根据类函数中的析构函数关闭目标文件以及目标文件的句柄,如此,便可通过函数调用操作文件,在打开文件后,实现文件以及文件句柄的自动关闭,无需考虑关闭文件时,导致文件的泄漏,从源头避免文件的泄漏,从而降低了维护成本。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种文件关闭方法,其特征在于,应用于电子设备,所述方法包括:
接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄;
在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄;其中,每个所述目标文件对应创建有类函数,其中所述类函数中包括构造函数以及析构函数。
2.根据权利要求1所述的文件关闭方法,其特征在于,所述根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄的步骤包括:
根据所述构造函数,调用系统库open函数,根据所述系统库open函数打开所述目标文件,并获得所述目标文件的句柄;
所述根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄的步骤包括:
根据所述析构函数,调用系统库close函数,根据所述系统库close函数关闭所述目标文件以及所述目标文件的句柄。
3.根据权利要求2所述的文件关闭方法,其特征在于,所述方法还包括:
记录每次打开所述目标文件的函数调用信息,并将所述函数调用信息存储于数据表中,并在关闭所述目标文件时,将所述目标文件的函数调用信息从所述数据表中删除。
4.根据权利要求3所述的文件关闭方法,其特征在于,所述方法还包括:
对存储于所述数据表中的函数调用信息进行统计,得到所有的函数调用信息的调用次数;
判断所述调用次数是否大于第一预设阈值,若大于,判定存在文件泄漏风险,并对所有的函数调用信息进行归类排序,将归类排序后的函数调用信息进行导出,并进行风险提醒。
5.根据权利要求4所述的文件关闭方法,其特征在于,所述方法还包括:
对所述数据表中的函数调用信息所对应的目标文件进行统计,得到所有打开的目标文件的个数;
判断所述打开的目标文件的个数是否大于预设文件阈值数,若大于,则进行报警。
6.根据权利要求4所述的文件关闭方法,其特征在于,在对所有的函数调用信息进行归类排序后,所述方法还包括:
针对同一函数调用信息,判断该函数调用信息的调用次数是否大于第二预设阈值,若大于,判定该函数调用信息所对应的目标文件存在泄漏风险,并进行提醒。
7.根据权利要求3所述的文件关闭方法,其特征在于,所述类函数中还包括查询函数,所述方法还包括:
根据所述查询函数,对所述数据表中的函数调用信息进行查询,获得所述数据表中的所有函数调用信息以及所有函数调用信息所对应的目标文件;
对所有函数调用信息进行归类排序,根据归类排序后的所有函数调用信息分析文件泄漏风险,并将归类排序后的所有函数调用信息以及所有函数调用信息所对应的目标文件进行导出。
8.一种文件关闭装置,其特征在于,应用于电子设备,所述装置包括文件打开模块以及文件关闭模块;
所述文件打开模块用于接收函数调用指令,根据所述函数调用指令调用目标文件对应的类函数,根据所述类函数中的构造函数打开所述目标文件,并获得所述目标文件的句柄;
所述文件关闭模块用于在所述函数调用指令执行完毕时,根据所述类函数中的析构函数关闭所述目标文件以及所述目标文件的句柄;其中,每个所述目标文件对应创建有类函数,其中所述类函数中包括构造函数以及析构函数。
9.一种电子设备,其特征在于,包括处理器及存储有计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述电子设备执行权利要求1-7中任意一项所述的文件关闭方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被执行时实现权利要求1-7中任意一项所述的文件关闭方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590714.8A CN111723016B (zh) | 2020-06-24 | 2020-06-24 | 文件关闭方法、装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010590714.8A CN111723016B (zh) | 2020-06-24 | 2020-06-24 | 文件关闭方法、装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723016A true CN111723016A (zh) | 2020-09-29 |
CN111723016B CN111723016B (zh) | 2024-06-04 |
Family
ID=72568861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010590714.8A Active CN111723016B (zh) | 2020-06-24 | 2020-06-24 | 文件关闭方法、装置、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723016B (zh) |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609495A (zh) * | 2012-01-29 | 2012-07-25 | 奇智软件(北京)有限公司 | 文件删除方法及系统 |
CN103914376A (zh) * | 2014-03-12 | 2014-07-09 | 汉柏科技有限公司 | 一种内存泄露的快速定位方法 |
US20150026658A1 (en) * | 2013-07-18 | 2015-01-22 | Appsense Limited | Systems, Methods and Media for Dynamic Creation and Update of Activation Context for Component Object Model |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
CN104794059A (zh) * | 2015-05-08 | 2015-07-22 | 北京理工大学 | 一种基于函数调用记录的缺陷定位方法及装置 |
CN105677311A (zh) * | 2014-11-21 | 2016-06-15 | 卓望数码技术(深圳)有限公司 | 一种函数调用关系的识别方法及装置 |
CN105930739A (zh) * | 2016-04-14 | 2016-09-07 | 北京金山安全软件有限公司 | 一种防止文件被删除的方法及终端 |
CN106020958A (zh) * | 2016-05-17 | 2016-10-12 | 北京金山安全软件有限公司 | 一种获取文件占用进程的方法、装置及电子设备 |
CN106169048A (zh) * | 2016-06-29 | 2016-11-30 | 北京金山安全软件有限公司 | 文件删除方法、装置及电子设备 |
WO2017206871A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 一种应用程序的关闭方法、装置、存储介质及电子设备 |
CN107480538A (zh) * | 2017-06-30 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 文件加密方法、装置、计算机可读存储介质和设备 |
CN108804937A (zh) * | 2018-06-12 | 2018-11-13 | 广州华多网络科技有限公司 | 系统函数调用方法及相关装置 |
CN109426496A (zh) * | 2017-08-31 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 程序日志写入文件的方法、存储介质、电子设备及系统 |
CN111104104A (zh) * | 2019-11-04 | 2020-05-05 | 珠海亿智电子科技有限公司 | 函数调用时间和统计结果可视化的方法、装置及可读介质 |
CN111240738A (zh) * | 2020-01-20 | 2020-06-05 | 北京无限光场科技有限公司 | 文件处理方法、装置、设备及介质 |
CN111258847A (zh) * | 2020-01-13 | 2020-06-09 | 北京字节跳动网络技术有限公司 | 一种文件句柄监控及分析方法、装置、介质和设备 |
-
2020
- 2020-06-24 CN CN202010590714.8A patent/CN111723016B/zh active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609495A (zh) * | 2012-01-29 | 2012-07-25 | 奇智软件(北京)有限公司 | 文件删除方法及系统 |
US20150026658A1 (en) * | 2013-07-18 | 2015-01-22 | Appsense Limited | Systems, Methods and Media for Dynamic Creation and Update of Activation Context for Component Object Model |
CN103914376A (zh) * | 2014-03-12 | 2014-07-09 | 汉柏科技有限公司 | 一种内存泄露的快速定位方法 |
CN105677311A (zh) * | 2014-11-21 | 2016-06-15 | 卓望数码技术(深圳)有限公司 | 一种函数调用关系的识别方法及装置 |
CN104636256A (zh) * | 2015-02-17 | 2015-05-20 | 中国农业银行股份有限公司 | 一种内存访问异常的检测方法及装置 |
CN104794059A (zh) * | 2015-05-08 | 2015-07-22 | 北京理工大学 | 一种基于函数调用记录的缺陷定位方法及装置 |
CN105930739A (zh) * | 2016-04-14 | 2016-09-07 | 北京金山安全软件有限公司 | 一种防止文件被删除的方法及终端 |
CN106020958A (zh) * | 2016-05-17 | 2016-10-12 | 北京金山安全软件有限公司 | 一种获取文件占用进程的方法、装置及电子设备 |
WO2017206871A1 (zh) * | 2016-05-31 | 2017-12-07 | 广东欧珀移动通信有限公司 | 一种应用程序的关闭方法、装置、存储介质及电子设备 |
CN106169048A (zh) * | 2016-06-29 | 2016-11-30 | 北京金山安全软件有限公司 | 文件删除方法、装置及电子设备 |
CN107480538A (zh) * | 2017-06-30 | 2017-12-15 | 武汉斗鱼网络科技有限公司 | 文件加密方法、装置、计算机可读存储介质和设备 |
CN109426496A (zh) * | 2017-08-31 | 2019-03-05 | 武汉斗鱼网络科技有限公司 | 程序日志写入文件的方法、存储介质、电子设备及系统 |
CN108804937A (zh) * | 2018-06-12 | 2018-11-13 | 广州华多网络科技有限公司 | 系统函数调用方法及相关装置 |
CN111104104A (zh) * | 2019-11-04 | 2020-05-05 | 珠海亿智电子科技有限公司 | 函数调用时间和统计结果可视化的方法、装置及可读介质 |
CN111258847A (zh) * | 2020-01-13 | 2020-06-09 | 北京字节跳动网络技术有限公司 | 一种文件句柄监控及分析方法、装置、介质和设备 |
CN111240738A (zh) * | 2020-01-20 | 2020-06-05 | 北京无限光场科技有限公司 | 文件处理方法、装置、设备及介质 |
Non-Patent Citations (7)
Title |
---|
刘发贵;温宇龙;罗春威;: "嵌入式软件动态内存检测工具的设计与实现", 计算机工程, no. 20, 20 October 2009 (2009-10-20), pages 44 - 46 * |
刘长红 等: "基于C++的Windows CE文件I/O处理技术", 《计算机与现代化》, no. 2, pages 11 - 13 * |
宋新爱;王宏;: "C程序的函数调用可视化研究", 软件导刊, no. 11, 30 November 2010 (2010-11-30), pages 73 - 76 * |
徐其望;陈震杭;彭国军;张焕国;: "一种基于预警信息的漏洞自动化快速防护方法", 信息安全学报, no. 01, 15 January 2020 (2020-01-15), pages 74 - 82 * |
汪小林 等: "利用虚拟化平台进行内存泄露探测", 《计算机学报》, vol. 33, no. 3, pages 463 - 472 * |
汪小林;王振林;孙逸峰;刘毅;张彬彬;罗英伟;: "利用虚拟化平台进行内存泄露探测", 计算机学报, no. 03, pages 463 - 472 * |
贾荻;向勇;孙卫真;曹睿东;: "基于数据库的在线函数调用图工具", 小型微型计算机系统, no. 03, pages 422 - 427 * |
Also Published As
Publication number | Publication date |
---|---|
CN111723016B (zh) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176321B2 (en) | Leveraging behavior-based rules for malware family classification | |
CN109101815B (zh) | 一种恶意软件检测方法及相关设备 | |
CN109933984B (zh) | 一种最佳聚类结果筛选方法、装置和电子设备 | |
CN111866016B (zh) | 日志的分析方法及系统 | |
CN113242218A (zh) | 一种网络安全监控方法及系统 | |
CN110134611B (zh) | 内存泄漏分析方法、装置、终端和存储介质 | |
US20230418943A1 (en) | Method and device for image-based malware detection, and artificial intelligence-based endpoint detection and response system using same | |
KR101444308B1 (ko) | 정보 유출 조기 경보 시스템 | |
Canto et al. | Large scale malware collection: lessons learned | |
US20240036841A1 (en) | Method and Apparatus for Compatibility Detection, Device and Non-transitory computer-readable storage medium | |
Bernardi et al. | A fuzzy-based process mining approach for dynamic malware detection | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN114462048A (zh) | 基于网络靶场的自动化渗透测试方法及系统 | |
CN108111328B (zh) | 一种异常处理方法及装置 | |
CN111371581A (zh) | 物联网卡业务异常检测的方法、装置、设备和介质 | |
CN113378161A (zh) | 一种安全检测方法、装置、设备及存储介质 | |
CN112231697A (zh) | 第三方sdk行为的检测方法、装置、介质及电子设备 | |
CN111723016B (zh) | 文件关闭方法、装置、电子设备和存储介质 | |
CN116305120A (zh) | 一种双重验证的安卓恶意软件混合检测系统及方法 | |
EP4254241A1 (en) | Method and device for image-based malware detection, and artificial intelligence-based endpoint detection and response system using same | |
CN111489165B (zh) | 目标对象的数据处理方法、装置和服务器 | |
CN114282221A (zh) | 注入类漏洞检测方法、系统、终端及存储介质 | |
CN115145623A (zh) | 软件业务系统的白盒监控方法、装置、设备和存储介质 | |
CN114189585A (zh) | 骚扰电话异常检测方法、装置及计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |