br>[0051]在具體實(shí)現(xiàn)時(shí),還可以要求上述步驟103的執(zhí)行時(shí)間與步驟101的執(zhí)行時(shí)間之間的時(shí)間間隔小于一定時(shí)間閾值,如10ms,以預(yù)防在執(zhí)行該步驟之前對(duì)比參量發(fā)生變化,尤其是第一更新時(shí)間。
[0052]步驟104,確定第一待檢測(cè)文件被改動(dòng)。
[0053]若第一更新時(shí)間晚于調(diào)用時(shí)間,則說明在進(jìn)程調(diào)用該第一待檢測(cè)文件后,該第一待檢測(cè)文件又被修改或覆蓋,則確定該第一待檢測(cè)文件已經(jīng)被改動(dòng),所述自動(dòng)檢測(cè)過程結(jié)束。
[0054]上述步驟102和步驟103之間的順序可以根據(jù)需要進(jìn)行調(diào)整,也可以同時(shí)進(jìn)行,只有當(dāng)?shù)谝粯?biāo)識(shí)信息與第二標(biāo)識(shí)信息相同,且第一更新時(shí)間晚于調(diào)用時(shí)間時(shí)才確定第一待檢測(cè)文件被改動(dòng)。
[0055]本發(fā)明實(shí)施例通過在進(jìn)程啟動(dòng)后,比較進(jìn)程中以及存儲(chǔ)介質(zhì)中待檢測(cè)文件的標(biāo)識(shí)信息及在進(jìn)程中的調(diào)用時(shí)間和存儲(chǔ)介質(zhì)中的更新時(shí)間,可以確定出該待檢測(cè)文件在進(jìn)程啟動(dòng)后是否被改動(dòng),通過該文件的自動(dòng)檢測(cè)方法,增加了程序運(yùn)行的穩(wěn)定性和可靠性,減少了程序崩潰的概率。
[0056]參見圖2,示出了本發(fā)明的另一種文件自動(dòng)檢測(cè)方法實(shí)施例的步驟流程圖,本實(shí)施例以Linux進(jìn)程啟動(dòng)后動(dòng)態(tài)鏈接庫(kù)文件的自動(dòng)檢測(cè)為例進(jìn)行說明,該方法具體可以包括如下步驟:
[0057]步驟201,獲取進(jìn)程的內(nèi)存映射信息,在進(jìn)程的內(nèi)存映射信息中查找獲得第一動(dòng)態(tài)鏈接庫(kù)文件的第一標(biāo)識(shí)信息。
[0058]本步驟具體可以根據(jù)/proc/PID/maps文件獲取進(jìn)程的內(nèi)存映射信息,進(jìn)而在進(jìn)程的內(nèi)存映射信息中查找獲得第一動(dòng)態(tài)鏈接庫(kù)文件(即第一待檢測(cè)文件)的第一標(biāo)識(shí)信息。該第一動(dòng)態(tài)鏈接庫(kù)文件的第一標(biāo)識(shí)信息可以是進(jìn)程中動(dòng)態(tài)鏈接庫(kù)的inode。
[0059]步驟202,獲取進(jìn)程的運(yùn)行信息,根據(jù)進(jìn)程的運(yùn)行信息獲得動(dòng)態(tài)鏈接庫(kù)文件的調(diào)用時(shí)間。
[0060]本步驟中,可以獲取進(jìn)程的運(yùn)行信息,進(jìn)而根據(jù)該進(jìn)程的運(yùn)行信息獲得進(jìn)程的啟動(dòng)時(shí)間,將進(jìn)程的啟動(dòng)時(shí)間作為該進(jìn)程中第一動(dòng)態(tài)鏈接庫(kù)文件的調(diào)用時(shí)間。
[0061]其中,可以根據(jù)/proc/stat,/proc/PID/stat兩個(gè)文件的數(shù)據(jù)計(jì)算得出進(jìn)程的啟動(dòng)時(shí)間,具體計(jì)算方法如下:
[0062]從/proc/stat獲取系統(tǒng)啟動(dòng)時(shí)間btime ;
[0063]從/proc/PID/stat獲取進(jìn)程消耗的系統(tǒng)滴答數(shù)delta ;
[0064]用getconf CLK_TCK獲取系統(tǒng)時(shí)鐘頻率freq ;
[0065]則進(jìn)程啟動(dòng)時(shí)間=btime+delta/freq
[0066]步驟203,在文件系統(tǒng)中查找獲得第二動(dòng)態(tài)鏈接庫(kù)文件的第二標(biāo)識(shí)信息及第一更新時(shí)間。
[0067]本步驟中可以根據(jù)Stat命令在文件系統(tǒng)中查找獲得第二動(dòng)態(tài)鏈接庫(kù)文件(即第二待檢測(cè)文件)的第二標(biāo)識(shí)信息及第一更新時(shí)間。該第二動(dòng)態(tài)鏈接庫(kù)文件的第二標(biāo)識(shí)信息可以是文件系統(tǒng)中第二動(dòng)態(tài)鏈接庫(kù)的inode。
[0068]上述步驟201、步驟202及步驟203可以同時(shí)進(jìn)行,也可以按一定順序依次執(zhí)行。其中,在步驟203中,通過stat命令可以在文件系統(tǒng)中同時(shí)查找獲得第二動(dòng)態(tài)鏈接庫(kù)文件的第二標(biāo)識(shí)信息和第一更新時(shí)間。在獲得上述參量后,執(zhí)行步驟204。
[0069]步驟204,判斷第一標(biāo)識(shí)信息與第二標(biāo)識(shí)信息是否相同。
[0070]本實(shí)施例中可以對(duì)比第一動(dòng)態(tài)鏈接庫(kù)文件的inode與第二動(dòng)態(tài)鏈接庫(kù)的inode是否相同,若相同,則說明進(jìn)程中的第一動(dòng)態(tài)鏈接庫(kù)文件與文件系統(tǒng)中的第二動(dòng)態(tài)鏈接庫(kù)文件是同一文件,此時(shí)執(zhí)行步驟205。
[0071]步驟205,判斷第一更新時(shí)間是否晚于調(diào)用時(shí)間。
[0072]若是,則執(zhí)行步驟206。
[0073]步驟206,確定第一動(dòng)態(tài)鏈接庫(kù)文件被改動(dòng)。
[0074]上述步驟204?206與前述實(shí)施例中的步驟102?104類似,此處不再贅述。
[0075]參照?qǐng)D3,示出了本發(fā)明的另一種文件自動(dòng)檢測(cè)方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
[0076]步驟301,獲得對(duì)比參量,該對(duì)比參量包括第一待檢測(cè)文件在進(jìn)程中的第一標(biāo)識(shí)信息及調(diào)用時(shí)間,以及第二待檢測(cè)文件在存儲(chǔ)介質(zhì)中的第二標(biāo)識(shí)信息及距離當(dāng)前最近的第一更新時(shí)間。
[0077]步驟302,判斷第一標(biāo)識(shí)信息與第二標(biāo)識(shí)信息是否相同。
[0078]如相同,則執(zhí)行步驟303。
[0079]步驟303,判斷第一更新時(shí)間是否晚于調(diào)用時(shí)間。
[0080]步驟301?303與前述實(shí)施例中的步驟101?103類似,此處不再贅述。
[0081]若第一更新時(shí)間晚于調(diào)用時(shí)間,則可確定該第一待檢測(cè)文件已被改動(dòng)。若第一更新時(shí)間早于或等于調(diào)用時(shí)間,為了進(jìn)一步確定該第一待檢測(cè)文件是否在上述檢測(cè)過程執(zhí)行期間被改動(dòng),則可以進(jìn)一步執(zhí)行步驟304。
[0082]步驟304,再次獲取第二待檢測(cè)文件在存儲(chǔ)介質(zhì)中距離當(dāng)前最近的第二更新時(shí)間。
[0083]文件自動(dòng)檢測(cè)裝置重復(fù)獲取第二待檢測(cè)文件在存儲(chǔ)介質(zhì)中的距離當(dāng)前最近的更新時(shí)間,記為第二更新時(shí)間。
[0084]步驟305,若第二更新時(shí)間與第一更新時(shí)間不同,則確定第一待檢測(cè)文件被改動(dòng)。
[0085]若該第二更新時(shí)間與第一次獲取的存儲(chǔ)介質(zhì)中的第二待檢測(cè)文件的第一更新時(shí)間相同,則說明在執(zhí)行上述步驟期間,存儲(chǔ)介質(zhì)中的第二待檢測(cè)文件沒有被修改或覆蓋,基于第一待檢測(cè)文件與第二待檢測(cè)文件之間的動(dòng)態(tài)映射關(guān)系,因此可以確定該第一待檢測(cè)文件沒有被改動(dòng);若第二更新時(shí)間與第一更新時(shí)間不同,則可以認(rèn)為該第一待檢測(cè)文件被改動(dòng)。
[0086]本實(shí)施例增加了核查步驟以排除在執(zhí)行自動(dòng)檢測(cè)期間待檢測(cè)文件被改動(dòng)的情況。
[0087]需要說明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明實(shí)施例并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明實(shí)施例,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本發(fā)明實(shí)施例所必須的。
[0088]參照?qǐng)D4,示出了本發(fā)明一種文件自動(dòng)檢測(cè)裝置實(shí)施例的結(jié)構(gòu)框圖,具體可以包括如下單元:
[0089]參量獲取單元401,用于獲得對(duì)比參量,所述對(duì)比參量包括第一待檢測(cè)文件在進(jìn)程中的第一標(biāo)識(shí)信息及調(diào)用時(shí)間,以及第二待檢測(cè)文件在存儲(chǔ)介質(zhì)中的第二標(biāo)識(shí)信息及距離當(dāng)前最近的第一更新時(shí)間。該第一待檢測(cè)文件在進(jìn)程中的調(diào)用時(shí)間可以為所述進(jìn)程的啟動(dòng)時(shí)間。
[0090]第一判定單元402,用于判斷所述第一標(biāo)識(shí)信息與所述第二標(biāo)識(shí)信息是否相同。
[0091]第二判定單元403,用于在所述第一判定單元402判定所述第一標(biāo)識(shí)信息與所述第二標(biāo)識(shí)信息相同時(shí),判斷所述第一更新時(shí)間是否晚于所述調(diào)用時(shí)間。
[0092]檢測(cè)單元404,用于在所述第二判定單元403判定所述第一更新時(shí)間晚于所述調(diào)用時(shí)間時(shí),確定所述第一待檢測(cè)文件被改動(dòng)。
[0093]本發(fā)明實(shí)施例通過上述單元在進(jìn)程啟動(dòng)后,比較進(jìn)程中以及存儲(chǔ)介質(zhì)中待檢測(cè)文件的標(biāo)識(shí)信息及在進(jìn)程中的調(diào)用時(shí)間和存儲(chǔ)介質(zhì)中的更新時(shí)間,可以確定出該待檢測(cè)文件在進(jìn)程啟動(dòng)后是否被改動(dòng),通過該文件的自動(dòng)檢測(cè)裝置,增加了程序運(yùn)行的穩(wěn)定性和可靠性,減少了程序崩潰的概率。
[0094]在本發(fā)明的另一實(shí)施例中,該參量獲取單元401,具體可以用于獲取所述進(jìn)程的內(nèi)存映射信息,以在所述進(jìn)程的內(nèi)存映射信息中查找獲得所述第一待檢測(cè)文件的第一標(biāo)識(shí)信息;以及,獲取所述進(jìn)程的運(yùn)行狀態(tài)信息,以根據(jù)所述進(jìn)程的運(yùn)行信息獲得所述第一待檢測(cè)文件的調(diào)用時(shí)間;在文件系統(tǒng)中查找獲得所述第二待檢測(cè)文件的所述第二標(biāo)識(shí)信息及所述第一更新時(shí)間。
[0095]參照?qǐng)D5,示出了本發(fā)明另一種文件自動(dòng)檢測(cè)裝置實(shí)施例的結(jié)構(gòu)框圖。該裝置除了包括參量獲取單元401,第一判定單元402,第二判定單元403,檢測(cè)單元404之外,還可以包括核查單元501。
[0096]其中,參量獲取單元401,還可以用于在所述第二判定單元403判定所述第一更新時(shí)間早于或等于所述調(diào)用時(shí)間時(shí),再次獲取所述第二待檢測(cè)文件在所述存儲(chǔ)介質(zhì)中距離當(dāng)前最近的第二更新時(shí)間。
[0097]核查單元501,用于在所述第二更新時(shí)間與所述第一更新時(shí)間不同時(shí),確定所述第一待檢測(cè)文件被改動(dòng)。
[0098]上述第一待檢測(cè)文件可以為動(dòng)態(tài)鏈接庫(kù)文件。上述裝置可以用于在Iinux下進(jìn)程啟動(dòng)后動(dòng)態(tài)鏈接庫(kù)文件的自動(dòng)檢測(cè)。
[0099]本發(fā)明實(shí)施例還提供了一種電子設(shè)備,該電子設(shè)備包