一種文件訪問方法、裝置及電子設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種文件訪問方法、裝置及電子設(shè)備。
【背景技術(shù)】
[0002]文件訪問方式可以分為獨占訪問和共享訪問,其中,獨占訪問是指以搶占的方式訪問文件,若其中一個程序訪問該文件成功,其它程序就不能訪問此文件;共享訪問是指多個程序同時可以訪問一個文件。例如:殺毒軟件對大文件的查殺一般需要很長時間,如果在查殺過程中,其它程序如壓縮程序?qū)υ撐募鰤嚎s處理,且壓縮程序是以獨占打開文件的方式打開此文件,那么壓縮程序打開文件錯誤,返回?zé)o法獨占打開并提示該文件有程序正在使用,影響用戶的使用體驗。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實施例提供一種文件訪問方法、裝置及電子設(shè)備??梢詫崿F(xiàn)在一個程序以共享方式打開文件時,另一個程序可以以獨占方式訪問文件,從而實現(xiàn)兩種文件訪問方式的共存,提高用戶使用體驗。
[0004]本發(fā)明實施例提供了一種文件訪問方法,包括:
[0005]啟動第一程序以共享文件方式訪問目標(biāo)文件;
[0006]當(dāng)檢測到在所述第一程序以共享文件方式訪問所述目標(biāo)文件的過程中第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程;
[0007]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程,進(jìn)而執(zhí)行所述第二程序以獨占文件方式完成對所述目標(biāo)文件的訪問。
[0008]其中,所述啟動第一程序以共享文件方式訪問目標(biāo)文件之后,還包括:
[0009]將所述第一程序的運行路徑數(shù)據(jù)存放到預(yù)設(shè)的全局?jǐn)?shù)組中;
[0010]所述在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程包括:
[0011 ]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,從所述預(yù)設(shè)的全局?jǐn)?shù)組中刪除所述第一程序的運行路徑數(shù)據(jù)。
[0012]其中,所述當(dāng)檢測到在所述第一程序以共享文件方式訪問所述目標(biāo)文件的過程中第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程包括:
[0013]在所述第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,查詢所述全局?jǐn)?shù)組中是否存在所述第一程序的運行路徑數(shù)據(jù);
[0014]若查詢到所述全局?jǐn)?shù)組中存在所述第一程序的運行路徑數(shù)據(jù),則調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程。
[0015]其中,所述在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程包括:
[0016]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,獲取所述第一程序返回的訪問調(diào)用結(jié)果;
[0017]根據(jù)所述第一程序返回的所述訪問調(diào)用結(jié)果,使用所述預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程。
[0018]相應(yīng)地,本發(fā)明實施例提供了一種文件訪問裝置,包括:
[0019]訪問啟動模塊,用于啟動第一程序以共享文件方式訪問目標(biāo)文件;
[0020]線程阻塞模塊,用于當(dāng)檢測到在所述第一程序以共享文件方式訪問所述目標(biāo)文件的過程中第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程;
[0021 ]線程釋放模塊,用于在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程,進(jìn)而執(zhí)行所述第二程序以獨占文件方式完成對所述目標(biāo)文件的訪問。
[0022]其中,所述訪問啟動模塊還用于:
[0023]將所述第一程序的運行路徑數(shù)據(jù)存放到預(yù)設(shè)的全局?jǐn)?shù)組中;
[0024]所述線程釋放模塊還用于:
[0025]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,從所述預(yù)設(shè)的全局?jǐn)?shù)組中刪除所述第一程序的運行路徑數(shù)據(jù)。
[0026]其中,所述線程阻塞模塊包括:
[0027]數(shù)據(jù)查詢單元,用于在所述第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,查詢所述全局?jǐn)?shù)組中是否存在所述第一程序的運行路徑數(shù)據(jù);
[0028]線程阻塞單元,用于若查詢到所述全局?jǐn)?shù)組中存在所述第一程序的運行路徑數(shù)據(jù),則調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程。
[0029]其中,所述線程釋放模塊具體用于:
[0030]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,獲取所述第一程序返回的訪問調(diào)用結(jié)果;
[0031]根據(jù)所述第一程序返回的所述訪問調(diào)用結(jié)果,使用所述預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程。
[0032]相應(yīng)地,本發(fā)明實施例提供了一種電子設(shè)備,包括:處理器、存儲器、通信接口和總線;
[0033]所述處理器、所述存儲器和所述通信接口通過所述總線連接并完成相互間的通
?目;
[0034]所述存儲器存儲可執(zhí)行程序代碼;
[0035]所述處理器通過讀取所述存儲器中存儲的可執(zhí)行程序代碼來運行與所述可執(zhí)行程序代碼對應(yīng)的程序,以用于:
[0036]啟動第一程序以共享文件方式訪問目標(biāo)文件;
[0037]當(dāng)檢測到在所述第一程序以共享文件方式訪問所述目標(biāo)文件的過程中第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程;
[0038]在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程,進(jìn)而執(zhí)行所述第二程序以獨占文件方式完成對所述目標(biāo)文件的訪問。
[0039]實施本發(fā)明實施例,首先啟動第一程序以共享文件方式訪問目標(biāo)文件;然后當(dāng)檢測到在所述第一程序以共享文件方式訪問所述目標(biāo)文件的過程中第二程序以獨占文件方式開始訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件阻塞函數(shù)阻塞所述第二程序的文件訪問線程;最后在檢測到所述第一程序停止訪問所述目標(biāo)文件時,調(diào)用預(yù)設(shè)的事件釋放函數(shù)釋放所述第二程序的文件訪問線程,進(jìn)而執(zhí)行所述第二程序以獨占文件方式完成對所述目標(biāo)文件的訪問??梢詫崿F(xiàn)在一個程序以共享方式打開文件時,另一個程序可以以獨占方式訪問文件,從而實現(xiàn)兩種文件訪問方式的共存,提高用戶使用體驗。
【附圖說明】
[0040]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0041]圖1是本發(fā)明提出的一種文件訪問方法的第一實施例流程圖;
[0042]圖2是本發(fā)明提出的一種文件訪問方法的第一實施例流程圖;
[0043]圖3是本發(fā)明實施例提出的一種文件訪問裝置的結(jié)構(gòu)示意圖;
[0044]圖4是本發(fā)明實施例提出的裝置中線程阻塞模塊的結(jié)構(gòu)示意圖;
[0045]圖5是本發(fā)明實施例提出的一種電子設(shè)備的結(jié)構(gòu)示意圖。
【具體實施方式】
[0046]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明