] 提取模塊,用于從所述過濾后的每條進程信息包含的全部字段中提取預設字段;
[0084] 構造模塊,用于基于所述過濾后的每條進程信息中的所述預設字段,構造一進程 列表;
[0085] 查殺模塊,用于基于所述進程列表進行病毒查殺。
[0086] 本申請實施例中提供的一個或多個技術方案,至少具有如下技術效果或優點:
[0087] 1、根據本發明的一種獲得進程列表的方法及裝置,執行進程查看命令,并獲取進 程查看命令的輸出結果;基于一過濾規則,對輸出結果中的全部進程信息進行過濾;對過濾 后的每條進程信息進行解析,獲得過濾后的每條進程信息包含的全部字段;從過濾后的每 條進程信息包含的全部字段中提取預設字段;基于過濾后的每條進程信息中的預設字段, 構造一進程列表。其中,所述U個預設字段為在Ando id 5.0以下的版本中對象 RunningApprocessInfo所提供的進程信息中的字段。本發明基于PS命令獲得當前運行的全 部進程的進程信息,并經過過濾,最后構造出和An d〇 i d 5 . 0以下的版本中對象 RunningApprocessInfo-樣的進程列表,從而獲得了更加全面的進程信息,且無需用戶手 動開啟權限,進而效地解決了現有技術中在Android 5.0版本中,需要用戶手動開啟權限才 能獲得進程列表,且獲取到的進程列表中的信息不全面的技術問題。
[0088] 2、根據本發明的一種進程清理方法及裝置,由于在Android 5.0版本的系統中,獲 得了和在Andro id 5.0以下版本中的RunningApprocessInfo對象一樣的進程列表,該進程 列表中包含比較全面的進程信息,所以基于該進程列表進行進程清理,可以保證進程清理 的效果,并提高進程清理的效率。
[0089] 3、根據本發明的一種病毒查殺方法及裝置,由于可以在Android 5.0版本的系統 中,獲得了和在Android 5.0以下版本中的RunningApprocessInfo對象一樣的進程列表,該 進程列表中包含比較全面的進程的相關信息,所以基于該進程列表進行病毒查殺,可以保 證病毒查殺的效果,并提高病毒查殺的效率。
[0090]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段, 而可依照說明書的內容予以實施,并且為了讓本發明的上述和其它目的、特征和優點能夠 更明顯易懂,以下特舉本發明的【具體實施方式】。
【附圖說明】
[0091] 通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對于本領域普通 技術人員將變得清楚明了。附圖僅用于示出優選實施方式的目的,而并不認為是對本發明 的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0092] 圖1示出了根據本發明一個實施例的一種獲得進程列表的方法的流程圖;
[0093]圖2示出了根據本發明一個實施例的一種獲得進程列表的裝置的結構圖;
[0094] 圖3示出了根據本發明一個實施例的一種進程清理方法的流程圖;
[0095] 圖4示出了根據本發明一個實施例的一種進程清理裝置的結構圖;
[0096] 圖5示出了根據本發明一個實施例的一種病毒查殺方法的流程圖;
[0097] 圖6示出了根據本發明一個實施例的一種病毒查殺裝置的結構圖。
【具體實施方式】
[0098] 下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開 的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這里闡述的實施例 所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍 完整的傳達給本領域的技術人員。
[0099] 本發明實施例提供了一種獲得進程列表的方法及裝置,用以解決了現有技術中在 Android 5.0版本中,需要用戶手動開啟權限才能獲得進程列表,且獲取到的進程列表中的 信息不全面的技術問題。
[0100] 實施例一
[0101] 本實施例提供了一種獲得進程列表的方法,應用于電子設備中,所述電子設備可 以是:智能手機、或平板電腦、或智能電視等等,此處,對于所述電子設備具體是何種電子設 備,本實施例不做具體限定。其中,在所述電子設備安裝內具有Android操作系統,該 Android操作系統可以為Android 5.0版本或Android 5.0以下的版本(例如:Android 4.2、 或Android 4.4等等)。
[0102] 如圖1所示,本實施例提供的一種獲得進程列表的方法,包括:
[0103] 步驟S101:執行進程查看命令,并獲取進程查看命令的輸出結果。
[0104] 在具體實施過程中,所述進程查看命令即為Linux下的PS命令,所述進程查看命令 的輸出結果即為PS命令的輸出結果,其中包含當前運行的全部進程的進程信息。
[0105] 在Linux系統中,要對進程進行監測和控制,首先必須要了解當前進程的情況,也 就是需要查看當前進程,而PS命令就是最基本同時也是非常強大的進程查看命令。使用PS 命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進 程占用了過多的資源等等。總之大部分信息都是可以通過執行PS命令得到的。
[0106] 而Andorid是基于Linux開發的,也支持PS命令,所以在本實施例中,通過執行PS命 令,并獲得PS命令的標準輸出結果,即可獲得當前進程的情況。在PS的標準輸出結果中包含 很多行和很多列信息,其中每一行對應一個進程,每一行中的每一列為一個字段,用于描述 對應進程的一個特征(例如:進程名稱、進程用戶、進程ID,等等),但是在PS的標準輸出結果 中包含大量的實際不需要的信息(例如:某些無效的系統進程的進程信息),而本申請的核 心之處是要構造出和Andoid 5.0以下的版本中對象RunningApprocessInfo-樣的進程列 表,所以需要進一步執行步驟S102-S105。
[0107] 步驟S102:基于一過濾規則,對輸出結果中的全部進程信息進行過濾。
[0108] 在具體實施過程中,過濾的原則是留下用戶進程的進程信息,剔除某些無效的系 統進程的進程信息,同時又需要保留某些系統進程(例如:系統預裝App)的進程信息。具體 過濾規則如下:
[0109] (1)如果第一進程信息中的進程用戶(即:user)是以第一預設字符串開頭的用戶, 則保留所述第一進程信息;其中,第一進程信息為輸出結果中的全部進程信息中的任一進 程信息,第一預設字符串為"u0_"、或"ul_"、或"app_"。也就是說,如果某一進程信息的user 的名稱是"u0_"、"ul_"、"app_"開頭的,則對應的進程肯定是用戶App進程或大多數內置App 的進程,所以需要保留該進程信息。
[0110] (2)如果第一進程信息中的進程用戶(即:user)為system,且第一進程息的進程名 稱中包含第一預設字符但不包含第二預設字符也不包含第二預設字符串,則保留所述第一 進程信息;其中,第一進程信息為輸出結果中的全部進程信息中的任一進程信息,第一預設 字符為,第二預設字符為V",第二預設字符串為" System_"。也就是說,對于user是 system的進程信息,貝lj排除掉進程名稱中含有"/"(例如:/system/)和"system」'(例如: s y s t e m _ s e r v e r )和進程名稱中沒有"."的進程信息。例如:進程名稱為 com.android· systemui的進程信息符合要求,保留;進程名稱為/system/bin/su、或zygote 的進程信息不符要求,排除。
[0111] (3)如果第一進程信息的進程用戶(即:user)不是system也不是以第一預設字符 串開頭的用戶,且第一進程信息的進程名稱中包含第一預設字符但不包含第二預設字符, 則保留所述第一進程信息;其中,第一進程信息為輸出結果中的全部進程信息中的任一進 程信息,第一預設字符串為"u0_"、或"ul_"、或"app_",第一預設字符為,第二預設字符 為7"。也就是說,如果進程信息中的user是其它情況(例如 :r〇〇t、nfc等),則排除掉進程名 中含有V"但沒有""的進程信息。例如:進程名稱為com. andro i d. phone的進程信息符合要 求,保留;進程名稱為radio的進程信息不符要求,排除。
[0112] 步驟S103:對過濾后的每條進程信息進行解析,獲得過濾后的每條進程信息包含 的全部字段。
[0113]作為一種可選的實施例,在執行步驟S103時,可以直接使用String, split方法,對 過濾后的每條進程信息進行解析。但是,String.split內部使用了正則表達式實現,效率較 低。經測試,使用Str ing. sp 1 i t解析需要的時間長達200多毫秒。
[0114] 作為一種優選的實施例,在執行步驟S103時,由于PS命令的輸出結果是一列一列 的字段,所以可以掃描過濾后的每條進程信息,記下過濾后的每條進程信息中的每一個從 空字符變化為非空字符的位置(即:確定了一個字段的開始位置),并將每一個從空字符變 化為非空字符的位置存為數組array;利用數組的索引,截取每一個從空字符變化為非空字 符的位置之后的字符串,從而獲得過濾后的每條進程信息中包含的全部字段。經測試,使用 本方法解析需要的時間僅需70多毫秒,效率較高,可以滿足實際需求。
[0115] 步驟S104:從所述過濾后的每條進程信息包含的全部字段中提取預設字段。
[0116] 在具體實施過程中,需要構造出在Andorid 5 . 0以下版本中的對象 RunningApprocessInfo,所以此處提取的預設字段即為對象RunningApprocessInfo中包含 的字段,包括:進程名稱(即:processName)、進程用戶(即:user)、進程ID(即:pid)、用戶ID (即:uid)、進程使用的包名列表(即:pkgList)、進程重要性信息(即:importance)。
[0117] 在具體實施過程中,可以從過濾后的每條進程信息中的第一列,提取進程用戶 (即:user)字段;可以從過濾后的每條進程信息中的第二列,提取進程ID(即:pid)字段;可 以從過濾后的每條進程信息中的最后第一列,提取進程名稱(即:processName)字段。
[0118] 在具體實施過程中,可以調用andro id · os · Process · getUidForName函數,獲得過 濾后的每條進程信息中的用戶ID(即:uid)字段。
[0119] 在具體實施過程中,可以基于過濾后的每條進程信息所在的包,確定過濾后的每 條進程信息中的進程使用的包名列表(即:PkgList)字段。也就是說,pkgList默認就是本進 程所在的包。
[0120] 步驟S105:基于過濾后的每條進程信息中的預設字段,構造一進程列表。
[0121 ] 在具體實施過程中,如表一所示,該進程列表與對象RunningApprocessInfo提供 的進程列表相同,包括以下字段:進程名稱(即:processName)字段、進程用戶(即:user)字 段、進程ID(即:pid)字段、用戶ID(即:uid)字段、進程使用的包名列表(即:pkgList)字段、 進程重要性信息(即:importance)字段。 Γηι "? LU'I ZJj 衣一
[0124] 在本實施例中,通過步驟S101~步驟S105,實現了在Android 5.0版本的系統中, 獲得和在Android 5.0以下版本中的RunningApprocessInfo對象一樣的進程列表的技術效 果。安全類App可以基本實施例中的技術方案獲得信息比較全面的進程列表,從而保證了進 程清理和病毒查殺的效果。且全過程不利用Android 5.0版本提供的AppStaksManager接 口,無需用戶手動開啟權限,也不