欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法

文檔序號(hào):6587680閱讀:1130來(lái)源:國(guó)知局
專利名稱:一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法
技術(shù)領(lǐng)域
本發(fā)明涉及后臺(tái)程序管理技術(shù)領(lǐng)域,特別是指一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法。
背景技術(shù)
在服務(wù)器的操作系統(tǒng)中,一般的業(yè)務(wù)應(yīng)用程序是作為后臺(tái)程序,且該程序獨(dú)立運(yùn)行,不受任何監(jiān)視與控制。在后臺(tái)程序運(yùn)行的過(guò)程中,如果某些后臺(tái)程序出現(xiàn)異常、錯(cuò)誤,將導(dǎo)致這些后臺(tái)程序崩潰,并退出系統(tǒng)停止運(yùn)行,那么用戶將再也不能享受此后臺(tái)程序所提供的服務(wù),直至管理員發(fā)現(xiàn)并手工重新啟動(dòng)運(yùn)行這些后臺(tái)程序使之恢復(fù)正常為止。對(duì)于電信、銀行、保險(xiǎn)等要求高可靠性的領(lǐng)域,如遇此問(wèn)題,其危害更甚。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,在不增加成本的前提下,可以實(shí)時(shí)監(jiān)視后臺(tái)程序的運(yùn)行,在發(fā)現(xiàn)后臺(tái)程序異常崩潰后,可立即重新啟動(dòng)該后臺(tái)程序,從而解決后臺(tái)程序運(yùn)行時(shí)的可靠性問(wèn)題,可為用戶持續(xù)提供服務(wù)。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,該方法包括以下步驟A、定義需要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名及其相對(duì)應(yīng)的絕對(duì)路徑,并將與絕對(duì)路徑相對(duì)應(yīng)的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中,同時(shí),將絕對(duì)路徑與文件名的對(duì)應(yīng)關(guān)系保存在系統(tǒng)內(nèi)存中;B、用監(jiān)視函數(shù)監(jiān)視進(jìn)程數(shù)組的元素值,當(dāng)被監(jiān)視的后臺(tái)程序發(fā)生異常退出時(shí),根據(jù)進(jìn)程數(shù)組下標(biāo)所對(duì)應(yīng)的數(shù)組元素值得到退出的后臺(tái)程序的進(jìn)程句柄,再根據(jù)進(jìn)程句柄與絕對(duì)路徑的對(duì)應(yīng)關(guān)系得到該后臺(tái)程序的可執(zhí)行文件的絕對(duì)路徑,重新啟動(dòng)運(yùn)行此后臺(tái)程序,同時(shí)操作系統(tǒng)返回該后臺(tái)程序的新進(jìn)程句柄,替換進(jìn)程數(shù)組中該退出的后臺(tái)程序的進(jìn)程句柄,繼續(xù)接受監(jiān)視。
其中,所述的步驟A進(jìn)一步包括A1、在與監(jiān)控工具同一目錄下建立一個(gè)初始化文件,并在該文件中,設(shè)置用戶要求監(jiān)視的后臺(tái)程序的可執(zhí)行文件名及其絕對(duì)路徑;A2、從初始化文件中,獲取用戶需要監(jiān)視的后臺(tái)程序文件名的絕對(duì)路徑,并將之保存在系統(tǒng)內(nèi)存中;A3、獲取當(dāng)前系統(tǒng)運(yùn)行中的所有程序可執(zhí)行文件名及其絕對(duì)路徑;A4、將步驟A3中獲取的絕對(duì)路徑與步驟A2中獲取的需監(jiān)視的后臺(tái)程序的絕對(duì)路徑相比較,如相同則將該絕對(duì)路徑相對(duì)應(yīng)的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中,如不同則放棄;A5、判斷初始化文件中,用戶要求監(jiān)視的后臺(tái)程序是否全部正在運(yùn)行,如果是則結(jié)束,否則執(zhí)行步驟A6;A6、將沒(méi)有運(yùn)行的后臺(tái)程序的可執(zhí)行文件的絕對(duì)路徑,作為參數(shù)送給進(jìn)程創(chuàng)建函數(shù),啟動(dòng)并運(yùn)行這些后臺(tái)程序;A7、將步驟A6中啟動(dòng)并運(yùn)行的后臺(tái)程序的絕對(duì)路徑的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中。
其中,所述的步驟A3進(jìn)一步包括A31、調(diào)用獲取進(jìn)程函數(shù)得到系統(tǒng)中當(dāng)前運(yùn)行的所有進(jìn)程句柄;A32、調(diào)用獲取模塊文件名的函數(shù)得到系統(tǒng)中當(dāng)前運(yùn)行的所有模塊句柄;A33、調(diào)用獲取模塊可執(zhí)行文件名函數(shù)得到所有后臺(tái)程序的每個(gè)進(jìn)程中的每個(gè)模塊的可執(zhí)行文件名及其絕對(duì)路徑。
其中,所述的步驟B進(jìn)一步包括在由線程創(chuàng)建函數(shù)創(chuàng)建的子線程中,使用監(jiān)視函數(shù)對(duì)后臺(tái)程序進(jìn)行監(jiān)控。
其中,所述的步驟B進(jìn)一步包括B1、調(diào)用監(jiān)視進(jìn)程句柄的函數(shù)監(jiān)視進(jìn)程數(shù)組中所有進(jìn)程句柄,判斷是否有進(jìn)程句柄退出;B2、根據(jù)退出的進(jìn)程句柄得到與其相對(duì)應(yīng)下標(biāo),將該下標(biāo)返回給等待多對(duì)象函數(shù),進(jìn)而得到退出的進(jìn)程句柄;B3、通過(guò)進(jìn)程句柄與絕對(duì)路徑對(duì)應(yīng)關(guān)系的列表找到與該退出的進(jìn)程句柄相對(duì)應(yīng)的可執(zhí)行文件的絕對(duì)路徑,將該絕對(duì)路徑作為一個(gè)參數(shù)送給進(jìn)程創(chuàng)建函數(shù),重新啟動(dòng)并運(yùn)行此后臺(tái)程序。
應(yīng)用本發(fā)明,只需針對(duì)每種操作系統(tǒng)開(kāi)發(fā)一個(gè)監(jiān)控工具軟件,即可實(shí)現(xiàn)對(duì)任何需要監(jiān)視的后臺(tái)程序進(jìn)行監(jiān)控,不需增加任何成本,即可有效提高后臺(tái)程序運(yùn)行的可靠性,為用戶提供持續(xù)有效的服務(wù)。本發(fā)明的方法簡(jiǎn)單實(shí)用,可操作性好,可適用于多種操作系統(tǒng)。


圖1用戶定義的后臺(tái)程序的可執(zhí)行文件名以及這些文件的絕對(duì)路徑的列表;圖2后臺(tái)程序文件的進(jìn)程句柄與該文件的絕對(duì)路徑對(duì)應(yīng)關(guān)系的列表;圖3進(jìn)程數(shù)組示意圖;圖4為監(jiān)控工具得到需要監(jiān)控的后臺(tái)程序的可執(zhí)行文件名以及這些文件的絕對(duì)路徑流程圖;圖5為通過(guò)監(jiān)控工具監(jiān)控用戶定義的后臺(tái)程序并重新啟動(dòng)已退出的后臺(tái)程序的流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。
本實(shí)施例以Windows操作系統(tǒng)為例。
在實(shí)施監(jiān)控之前,用戶建立一個(gè)初始化文件,在該文件中設(shè)置需要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名以及這些文件的絕對(duì)路徑,其對(duì)應(yīng)關(guān)系如圖1所示,后臺(tái)程序的可執(zhí)行文件名與該文件的絕對(duì)路徑一一對(duì)應(yīng),以保證在監(jiān)控工具啟動(dòng)時(shí),從該初始化文件中可讀取到需要監(jiān)視的后臺(tái)程序文件的絕對(duì)路徑,并保存在字符串?dāng)?shù)組中。
監(jiān)控過(guò)程如下,首先,從系統(tǒng)運(yùn)行的所有后臺(tái)程序中得到用戶定義的需要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名及其絕對(duì)路徑,將得到的要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名保存在進(jìn)程句柄(在程序運(yùn)行期間,操作系統(tǒng)將為每一個(gè)后臺(tái)程序文件分配一個(gè)唯一的進(jìn)程號(hào),即每一個(gè)后臺(tái)程序文件都將得到一個(gè)進(jìn)程的標(biāo)識(shí)符,這種標(biāo)識(shí)符在Windows操作系統(tǒng)下稱之為進(jìn)程句柄,是一個(gè)HANDLE類型的值)與絕對(duì)路徑映射的數(shù)組中,進(jìn)程句柄與絕對(duì)路徑的對(duì)應(yīng)關(guān)系如圖2所示的列表,該列表保存在系統(tǒng)的內(nèi)存中;將要監(jiān)視的后臺(tái)程序文件的絕對(duì)路徑保存為進(jìn)程數(shù)組,如圖3所示進(jìn)程數(shù)組示意圖,數(shù)組的元素值為進(jìn)程句柄,數(shù)組下標(biāo)為需要監(jiān)控的文件名在數(shù)組中的位置。
這樣,需要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名、絕對(duì)路徑以及該后臺(tái)程序的進(jìn)程句柄便形成一一對(duì)應(yīng)關(guān)系。
其次,在CreateThread()函數(shù)創(chuàng)建的子線程里,監(jiān)控工具監(jiān)控后臺(tái)程序文件,如果后臺(tái)程序產(chǎn)生錯(cuò)誤退出,則自動(dòng)重新啟動(dòng)該退出的后臺(tái)程序。
具體過(guò)程如下如圖4所示監(jiān)控工具得到需要監(jiān)控的后臺(tái)程序可執(zhí)行文件的文件名以及這些文件的絕對(duì)路徑的流程圖步驟401,調(diào)用GetFileNameFromInitFile()函數(shù)從初始化文件中獲取需要監(jiān)視的后臺(tái)程序可執(zhí)行文件的絕對(duì)路徑,并保存在內(nèi)存中;步驟402,調(diào)用EnumProcess()函數(shù)得到系統(tǒng)中當(dāng)前運(yùn)行的所有進(jìn)程句柄;步驟403,通過(guò)應(yīng)用程序編程接口(API)遍歷系統(tǒng)中的每個(gè)進(jìn)程;步驟404,調(diào)用EnumProcessModules()函數(shù),得到進(jìn)程中的所有模塊句柄;步驟405,通過(guò)API遍歷進(jìn)程中的每個(gè)模塊;步驟406,調(diào)用GetModuleFileNameEx()函數(shù),得到系統(tǒng)中每個(gè)模塊的可執(zhí)行文件名及其絕對(duì)路徑。
步驟407,用上一步得到的系統(tǒng)中當(dāng)前運(yùn)行進(jìn)程中的每個(gè)模塊的可執(zhí)行文件的絕對(duì)路徑與用戶自己定義的需要監(jiān)視的后臺(tái)程序文件的絕對(duì)路徑進(jìn)行對(duì)比;如果相同則執(zhí)行步驟409,將后臺(tái)程序的絕對(duì)路徑保存在需要監(jiān)視的進(jìn)程數(shù)組中;執(zhí)行步驟410,將后臺(tái)程序的可執(zhí)行文件名保存在進(jìn)程句柄與絕對(duì)路徑映射的數(shù)組中,否則執(zhí)行步驟408,執(zhí)行空操作跳過(guò)。
步驟411,判斷上述對(duì)比是否完畢,如果是執(zhí)行步驟412,否則執(zhí)行步驟107繼續(xù)對(duì)比。
步驟412,判斷用戶定義的需要監(jiān)視的后臺(tái)程序是否全部正在運(yùn)行,如果是則結(jié)束,否則執(zhí)行步驟413;步驟413,將沒(méi)有運(yùn)行的后臺(tái)程序的絕對(duì)路徑作為參數(shù)給CreateProcess()函數(shù),啟動(dòng)并運(yùn)行這些后臺(tái)程序;步驟414,將后臺(tái)程序的絕對(duì)路徑保存在需要監(jiān)控的進(jìn)程數(shù)組中;步驟415,將后臺(tái)程序的可執(zhí)行文件名保存在進(jìn)程句柄與絕對(duì)路徑映射的數(shù)組中。
如圖5所示通過(guò)監(jiān)控工具監(jiān)視用戶定義的后臺(tái)程序并重新啟動(dòng)退出的后臺(tái)程序的流程圖步驟501,利用WaitForMultipleObjects()函數(shù)監(jiān)視進(jìn)程數(shù)組中所有進(jìn)程句柄;步驟502,判斷是否有進(jìn)程退出;如果是執(zhí)行步驟503,根據(jù)退出的進(jìn)程句柄得到與其相對(duì)應(yīng)的下標(biāo),將該下標(biāo)返回給WaitForMultipleObjects()函數(shù),進(jìn)而得到退出的進(jìn)程句柄,再通過(guò)進(jìn)程句柄與絕對(duì)路徑的對(duì)應(yīng)關(guān)系找到該退出的進(jìn)程句柄的可執(zhí)行文件的絕對(duì)路徑;否則重復(fù)執(zhí)行步驟502;步驟504,將該絕對(duì)路徑作為一個(gè)參數(shù)送給CreateProcess()函數(shù),重新啟動(dòng)并運(yùn)行此后臺(tái)程序;步驟505,將操作系統(tǒng)返回的新進(jìn)程句柄替換進(jìn)程數(shù)組中該退出的后臺(tái)程序的進(jìn)程句柄,繼續(xù)接受WaitForMultipleObjects()函數(shù)的監(jiān)視。
UNIX操作系統(tǒng)或其它操作系統(tǒng)的監(jiān)控方法類似。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,其特征在于該方法包括以下步驟A、定義需要監(jiān)視的后臺(tái)程序的可執(zhí)行文件名及其相對(duì)應(yīng)的絕對(duì)路徑,并將與絕對(duì)路徑相對(duì)應(yīng)的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中,同時(shí),將絕對(duì)路徑與文件名的對(duì)應(yīng)關(guān)系保存在系統(tǒng)內(nèi)存中;B、用監(jiān)視函數(shù)監(jiān)視進(jìn)程數(shù)組的元素值,當(dāng)被監(jiān)視的后臺(tái)程序發(fā)生異常退出時(shí),根據(jù)進(jìn)程數(shù)組下標(biāo)所對(duì)應(yīng)的數(shù)組元素值得到退出的后臺(tái)程序的進(jìn)程句柄,再根據(jù)進(jìn)程句柄與絕對(duì)路徑的對(duì)應(yīng)關(guān)系得到該后臺(tái)程序的可執(zhí)行文件的絕對(duì)路徑,重新啟動(dòng)運(yùn)行此后臺(tái)程序,將操作系統(tǒng)返回該后臺(tái)程序的新進(jìn)程句柄,替換進(jìn)程數(shù)組中該退出的后臺(tái)程序的進(jìn)程句柄,繼續(xù)接受監(jiān)視。
2.根據(jù)權(quán)利要求1所述的一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,其特征在于,所述的步驟A進(jìn)一步包括A1、在與監(jiān)控工具同一目錄下建立一個(gè)初始化文件,并在該文件中,設(shè)置用戶要求監(jiān)視的后臺(tái)程序的可執(zhí)行文件名及其絕對(duì)路徑;A2、從初始化文件獲取文件名和絕對(duì)路徑,并將之保存在系統(tǒng)內(nèi)存中;A3、獲取當(dāng)前系統(tǒng)運(yùn)行中的所有程序的進(jìn)程的句柄及其絕對(duì)路徑;A4、將步驟A3中獲取的絕對(duì)路徑與步驟A2中獲取的需監(jiān)視的后臺(tái)程序的絕對(duì)路徑相比較,如相同則將該絕對(duì)路徑對(duì)應(yīng)的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中,如不同則放棄;A5、判斷初始化文件中,用戶要求監(jiān)視的后臺(tái)程序是否全部正在運(yùn)行,如果是則結(jié)束,否則執(zhí)行步驟A6;A6、將沒(méi)有運(yùn)行的后臺(tái)程序的可執(zhí)行文件的絕對(duì)路徑,作為參數(shù)送給進(jìn)程創(chuàng)建函數(shù),啟動(dòng)并運(yùn)行這些后臺(tái)程序;A7、將步驟A6中啟動(dòng)并運(yùn)行的后臺(tái)程序的絕對(duì)路徑的進(jìn)程句柄作為元素值保存在進(jìn)程數(shù)組中。
3.根據(jù)權(quán)利要求2所述的一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,其特征在于,所述的步驟A3進(jìn)一步包括A31、調(diào)用獲取進(jìn)程函數(shù)得到系統(tǒng)中當(dāng)前運(yùn)行的所有進(jìn)程句柄;A32、調(diào)用獲取模塊文件名的函數(shù)得到系統(tǒng)中當(dāng)前運(yùn)行的所有模塊句柄;A33、調(diào)用獲取模塊可執(zhí)行文件名函數(shù)得到所有程序的每個(gè)進(jìn)程中的每個(gè)模塊的可執(zhí)行文件名及其絕對(duì)路徑。
4.根據(jù)權(quán)利要求1所述的一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,其特征在于,所述的步驟B進(jìn)一步包括在由線程創(chuàng)建函數(shù)創(chuàng)建的子線程中,使用監(jiān)視函數(shù)對(duì)后臺(tái)程序進(jìn)行監(jiān)控。
5.根據(jù)權(quán)利要求1所述的一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,其特征在于,所述的步驟B進(jìn)一步包括B1、調(diào)用監(jiān)視進(jìn)程句柄的函數(shù)監(jiān)視進(jìn)程數(shù)組中所有進(jìn)程句柄,判斷是否有進(jìn)程退出;B2、根據(jù)退出的進(jìn)程句柄得到與其相對(duì)應(yīng)下標(biāo),該下標(biāo)被返回給等待多對(duì)象函數(shù),進(jìn)而得到退出的進(jìn)程句柄;B3、通過(guò)進(jìn)程句柄與絕對(duì)路徑對(duì)應(yīng)關(guān)系的列表找到與該退出的進(jìn)程句柄相對(duì)應(yīng)的可執(zhí)行文件的絕對(duì)路徑,將該絕對(duì)路徑作為一個(gè)參數(shù)送給進(jìn)程創(chuàng)建函數(shù),重新啟動(dòng)并運(yùn)行此后臺(tái)程序。
全文摘要
本發(fā)明提供了一種對(duì)后臺(tái)程序進(jìn)行監(jiān)控的方法,該方法包括以下步驟定義需要監(jiān)控后臺(tái)程序的可執(zhí)行文件名及其相對(duì)應(yīng)的絕對(duì)路徑,將進(jìn)程句柄數(shù)組、絕對(duì)路徑與文件名的對(duì)應(yīng)關(guān)系保存在系統(tǒng)內(nèi)存中;用監(jiān)視函數(shù)監(jiān)視進(jìn)程數(shù)組的元素值,當(dāng)被監(jiān)視的后臺(tái)程序發(fā)生異常退出時(shí),根據(jù)進(jìn)程數(shù)組下標(biāo)所對(duì)應(yīng)的數(shù)組元素值得到退出的后臺(tái)程序的進(jìn)程句柄,再根據(jù)該進(jìn)程句柄得到該后臺(tái)程序的可執(zhí)行文件的絕對(duì)路徑,重新啟動(dòng)運(yùn)行此后臺(tái)程序,將操作系統(tǒng)返回的后臺(tái)程序的新進(jìn)程句柄替換進(jìn)程數(shù)組中該退出的后臺(tái)程序的進(jìn)程句柄,繼續(xù)接受監(jiān)視。應(yīng)用本發(fā)明可在不增加成本的前提下,解決后臺(tái)程序運(yùn)行時(shí)的可靠性問(wèn)題。
文檔編號(hào)G06F11/30GK1489049SQ0213085
公開(kāi)日2004年4月14日 申請(qǐng)日期2002年10月11日 優(yōu)先權(quán)日2002年10月11日
發(fā)明者李剛, 楊小桐, 隆承志, 張建勝, 戴玉宏, 鄒勇, 剛 李 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
玉门市| 吐鲁番市| 淮阳县| 浪卡子县| 林甸县| 鄢陵县| 青浦区| 三都| 鄱阳县| 青海省| 廊坊市| 安达市| 嫩江县| 黑河市| 赤壁市| 吉水县| 横峰县| 崇信县| 忻城县| 宜城市| 巧家县| 黑水县| 达拉特旗| 老河口市| 温州市| 河间市| 平南县| 梨树县| 石门县| 广饶县| 柳河县| 武川县| 伊吾县| 务川| 临夏县| 都兰县| 安仁县| 万山特区| 梨树县| 湖南省| 大埔县|