控制進程運行的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種控制進程運行的方法及裝置。所述方法包括:通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;通過所述子進程中的第二通信程序接收所述控制命令;通過所述子進程中的用戶程序執(zhí)行所述控制命令。采用本發(fā)明提供的控制進程運行的方法,父進程與子進程之間的交互不再通過InputStream和OutputStream實現,而是通過第一通信程序與第二通信程序實現,在第一通信程序與第二通信程序之間可以傳輸各種形式的數據,不再固定為在InputStream和OutputStream之間傳輸的字符串,因此,父進程和子進程無需進行文本字符解析。優(yōu)化了父進程與子進程之間的交互。
【專利說明】
控制進程運行的方法及裝置
技術領域
[0001]本發(fā)明涉及通信技術領域,具體地,涉及一種控制進程運行的方法及裝置。【背景技術】
[0002]進程是處理器正在執(zhí)行的程序。一個進程可以創(chuàng)建子進程,已創(chuàng)建子進程的進程為父進程。父進程與子進程之間的交互過程是:父進程通過InputStream來讀取子進程的輸出字符串,通過OutputStream向子進程輸入字符串以控制子進程啟動或停止,父進程控制子進程啟動后,待子進程被執(zhí)行完成之后,通過對子進程輸出的字符串進行文本字符解析, 獲得子進程的執(zhí)行結果。
【發(fā)明內容】
[0003]本發(fā)明的目的是提供一種控制進程運行的方法及裝置,用以優(yōu)化父進程與子進程之間的交互。
[0004]為了實現上述目的,本發(fā)明第一方面提供一種控制進程運行的方法,應用于處理器,所述方法包括:
[0005]通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;
[0006]通過所述子進程中的第二通信程序接收所述控制命令;
[0007]通過所述子進程中的用戶程序執(zhí)行所述控制命令。
[0008]可選地,所述方法還包括:
[0009]通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀態(tài)信息。
[0010]可選地,在所述通過所述子進程中的用戶程序執(zhí)行所述控制命令之后,所述方法還包括:
[0011]通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。
[0012]可選地,所述控制命令包括以下中的至少一者:暫停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。
[0013]可選地,所述子進程的狀態(tài)信息包括以下中的至少一者:所述子進程的運行狀態(tài)、 所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令的進度。
[0014]可選地,所述控制命令包括獲取滿足預定條件的數據,所述通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果,包括:
[0015]根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;[〇〇16]通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述預定條件的數據。
[0017]本發(fā)明第二方面提供一種控制進程運行的裝置,應用于處理器,所述裝置包括:
[0018]第一發(fā)送模塊,用于通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;
[0019]接收模塊,用于通過所述子進程中的第二通信程序接收所述控制命令;
[0020]執(zhí)行模塊,用于通過所述子進程中的用戶程序執(zhí)行所述控制命令。
[0021]可選地,所述裝置還包括:
[0022]第二發(fā)送模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀態(tài)信息。[〇〇23] 可選地,所述裝置還包括:
[0024]第三發(fā)送模塊,用于在所述通過所述子進程中的用戶程序執(zhí)行所述控制命令之后,通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。
[0025]可選地,所述控制命令包括以下中的至少一者:暫停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。
[0026]可選地,所述子進程的狀態(tài)信息包括以下中的至少一者:所述子進程的運行狀態(tài)、 所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令的進度。
[0027]可選地,所述控制命令包括獲取滿足預定條件的數據,所述第三發(fā)送模塊包括:
[0028]篩選子模塊,用于根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;
[0029]發(fā)送子模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述預定條件的數據。[0〇3〇] 通過上述技術方案,父進程與子進程之間的交互不再通過Inputstream和 OutputStream實現,而是通過第一通信程序與第二通信程序實現,在第一通信程序與第二通信程序之間可以傳輸各種形式的數據,不再固定為在InputStream和OutputStream之間傳輸的字符串,因此,父進程和子進程無需進行文本字符解析。優(yōu)化了父進程與子進程之間的交互。[〇〇31]本發(fā)明的其他特征和優(yōu)點將在隨后的【具體實施方式】部分予以詳細說明。【附圖說明】[〇〇32]附圖是用來提供對本發(fā)明的進一步理解,并且構成說明書的一部分,與下面的【具體實施方式】一起用于解釋本發(fā)明,但并不構成對本發(fā)明的限制。在附圖中:
[0033]圖1為本發(fā)明實施例提供的一種控制進程運行的方法的流程圖;
[0034]圖2是本發(fā)明實施例提供的父進程與子進程組成的通信系統(tǒng)的示意圖;
[0035]圖3為本發(fā)明實施例提供的一種控制進程運行的方法的另一流程圖;
[0036]圖4為本發(fā)明實施例提供的一種控制進程運行的裝置的框圖?!揪唧w實施方式】
[0037]以下結合附圖對本發(fā)明的【具體實施方式】進行詳細說明。應當理解的是,此處所描述的【具體實施方式】僅用于說明和解釋本發(fā)明,并不用于限制本發(fā)明。
[0038]為優(yōu)化父進程與子進程之間的交互,使得父進程對子進程的控制不限于啟動和停止,并使得父進程可以實時檢測子進程的運行狀態(tài),本發(fā)明實施例提供了一種控制進程運行的方法。
[0039]請參考圖1,圖1為本發(fā)明實施例提供的一種控制進程運行的方法的流程圖,應用于處理器,所述方法包括以下步驟:
[0040]步驟S11:通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;
[0041]步驟S12:通過所述子進程中的第二通信程序接收所述控制命令;
[0042]步驟S13:通過所述子進程中的用戶程序執(zhí)行所述控制命令。
[0043]如圖2所示,本發(fā)明實施例中,子進程除包括用戶程序外,在子進程中增加了第二通信程序,相應地,在父進程中增加了第一通信程序,父進程與子進程之間的通信通過第一通信程序與第二通信程序之間的交互實現。處理器控制父進程中的第一通信程序向子進程發(fā)送控制命令,相應地,控制子進程中的第二通信程序接收控制命令。接著,控制子進程中的用戶程序執(zhí)行第二通信程序接收到的控制命令。[〇〇44] 采用上述技術方案,父進程與子進程之間的交互不再通過InputStream和 OutputStream實現,而是通過第一通信程序與第二通信程序實現,在第一通信程序與第二通信程序之間可以傳輸各種形式的數據,不再固定為在InputStream和OutputStream之間傳輸的字符串,因此,父進程和子進程無需進行文本字符解析。優(yōu)化了父進程與子進程之間的交互。
[0045]可選地,所述控制命令包括以下中的至少一者:暫停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。
[0046]由于父進程與子進程之間的通信通過第一通信程序與第二通信程序之間的交互實現,所以可以對第一通信程序和第二通信程序進行設置,進而使得父進程可以向子進程發(fā)送各種控制命令,包括:暫停子進程、重啟子進程、啟動子進程、停止子進程。可選地,父進程還可以向子進程發(fā)送其它擴展命令,包括:鎖定子進程、控制子進程進入睡眠狀態(tài)、喚醒子進程、查詢子進程的狀態(tài)信息等。[〇〇47]采用上述技術方案,借助于由第一通信程序和第二通信程序所形成的通信通道, 父進程對子進程的控制更加靈活多變,不再局限于啟動和停止。
[0048]可選地,本發(fā)明實施例提供的控制進程的方法還包括:
[0049]通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀態(tài)信息。
[0050]可選地,父進程也可以通過第一通信程序查詢子進程的狀態(tài)信息,然后子進程通過第二通信程序向父進程發(fā)送子進程的狀態(tài)信息。
[0051]可選地,所述子進程的狀態(tài)信息包括以下中的至少一者:所述子進程的運行狀態(tài)、 所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令的進度。
[0052]由于父進程與子進程之間存在由第一通信程序和第二通信程序所形成的通信通道,所以子進程可以通過第二通信程序主動地向父進程中的第一通信程序發(fā)送子進程的狀態(tài)信息,以使得父進程獲知子進程的狀態(tài)信息。其中,狀態(tài)信息包括:子進程的運行狀態(tài)、子進程占用的資源量、子進程執(zhí)行父進程發(fā)送的控制命令的進度等。[〇〇53]采用上述技術方案,借助于由第一通信程序和第二通信程序所形成的通信通道, 子進程可以主動向父進程上報子進程的狀態(tài)信息。父進程也可以實時獲取子進程的狀態(tài)信息。
[0054] 可選地,如圖3所示,在所述步驟S13之后,所述方法還包括:
[0055]步驟S14:通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。
[0056]在執(zhí)行完步驟S12之后,子進程中的用戶程序執(zhí)行父進程發(fā)送的控制命令,進而生成執(zhí)行結果。子進程所生成的執(zhí)行結果可以通過第二通信程序發(fā)送給父進程中的第一通信程序,使得父進程獲知子進程執(zhí)行控制命令后生成的執(zhí)行結果。由于執(zhí)行結果是通過父進程與子進程之間的由第一通信程序和第二通信程序所形成的通信通道傳輸,所以執(zhí)行結果可以以各種形式被傳輸,不必固定為字符串,父進程也無需進行文本字符解析??蛇x地,執(zhí)行結果以對象的形式進行傳輸。
[0057]可選地,所述控制命令包括獲取滿足預定條件的數據,所述通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的結果,包括:
[0058]根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;
[0059]通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述預定條件的數據。
[0060]為了提高傳輸效率,節(jié)約傳輸資源,父進程向子進程發(fā)送的控制命令可以是獲取滿足預定條件的數據,則在通過子進程的用戶程序執(zhí)行父進程向子進程發(fā)送的控制命令后,對生成的執(zhí)行結果進行篩選,篩選出滿足預定條件的數據,然后通過第二通信程序發(fā)送給第一通信程序。
[0061]采用上述技術方案,在父進程與子進程之間傳輸的是子進程的執(zhí)行結果中滿足預定條件的數據,子進程不必將執(zhí)行結果全部發(fā)給父進程,父進程可以獲取子進程的執(zhí)行結果中滿足預定條件的數據,提高了傳輸效率,節(jié)約了傳輸資源。
[0062]基于同一發(fā)明構思,本發(fā)明實施例還提供了一種控制進程運行的裝置,應用于處理器,如圖4所示,所述裝置100包括:
[0063]第一發(fā)送模塊121,用于通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;[〇〇64]接收模塊122,用于通過所述子進程中的第二通信程序接收所述控制命令;[〇〇65]執(zhí)行模塊123,用于通過所述子進程中的用戶程序執(zhí)行所述控制命令。[〇〇66] 可選地,所述裝置還包括:
[0067]第二發(fā)送模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀態(tài)信息。[〇〇68] 可選地,所述裝置還包括:
[0069]第三發(fā)送模塊,用于在所述通過所述子進程中的用戶程序執(zhí)行所述控制命令之后,通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。
[0070]可選地,所述控制命令包括以下中的至少一者:暫停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。
[0071]可選地,所述子進程的狀態(tài)信息包括以下中的至少一者:所述子進程的運行狀態(tài)、 所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令的進度。
[0072]可選地,所述控制命令包括獲取滿足預定條件的數據,所述第三發(fā)送模塊包括:
[0073]篩選子模塊,用于根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;
[0074]發(fā)送子模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述預定條件的數據。[〇〇75]關于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。[〇〇76]以上結合附圖詳細描述了本發(fā)明的優(yōu)選實施方式,但是,本發(fā)明并不限于上述實施方式中的具體細節(jié),在本發(fā)明的技術構思范圍內,可以對本發(fā)明的技術方案進行多種簡單變型,這些簡單變型均屬于本發(fā)明的保護范圍。[〇〇77]另外需要說明的是,在上述【具體實施方式】中所描述的各個具體技術特征,在不矛盾的情況下,可以通過任何合適的方式進行組合,為了避免不必要的重復,本發(fā)明對各種可能的組合方式不再另行說明。
[0078]此外,本發(fā)明的各種不同的實施方式之間也可以進行任意組合,只要其不違背本發(fā)明的思想,其同樣應當視為本發(fā)明所公開的內容。
【主權項】
1.一種控制進程運行的方法,其特征在于,應用于處理器,所述方法包括:通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送控制命令;通過所述子進程中的第二通信程序接收所述控制命令;通過所述子進程中的用戶程序執(zhí)行所述控制命令。2.根據權利要求1所述的方法,其特征在于,所述方法還包括:通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀態(tài)信息。3.根據權利要求1所述的方法,其特征在于,在所述通過所述子進程中的用戶程序執(zhí)行 所述控制命令之后,所述方法還包括:通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。4.根據權利要求1所述的方法,其特征在于,所述控制命令包括以下中的至少一者:暫 停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。5.根據權利要求2所述的方法,其特征在于,所述子進程的狀態(tài)信息包括以下中的至少 一者:所述子進程的運行狀態(tài)、所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令的進度。6.根據權利要求3所述的方法,其特征在于,所述控制命令包括獲取滿足預定條件的數 據,所述通過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行 結果,包括:根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述預定條件的數據。7.—種控制進程運行的裝置,其特征在于,應用于處理器,所述裝置包括:第一發(fā)送模塊,用于通過父進程中的第一通信程序向由所述父進程創(chuàng)建的子進程發(fā)送 控制命令;接收模塊,用于通過所述子進程中的第二通信程序接收所述控制命令;執(zhí)行模塊,用于通過所述子進程中的用戶程序執(zhí)行所述控制命令。8.根據權利要求7所述的裝置,其特征在于,所述裝置還包括:第二發(fā)送模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送所述子進程的狀 態(tài)信息。9.根據權利要求7所述的裝置,其特征在于,所述裝置還包括:第三發(fā)送模塊,用于在所述通過所述子進程中的用戶程序執(zhí)行所述控制命令之后,通 過所述第二通信程序向所述第一通信程序發(fā)送執(zhí)行所述控制命令后生成的執(zhí)行結果。10.根據權利要求7所述的裝置,其特征在于,所述控制命令包括以下中的至少一者:暫 停所述子進程、重啟所述子進程、啟動所述子進程、停止所述子進程。11.根據權利要求8所述的裝置,其特征在于,所述子進程的狀態(tài)信息包括以下中的至 少一者:所述子進程的運行狀態(tài)、所述子進程占用的資源量、所述子進程執(zhí)行所述控制命令 的進度。12.根據權利要求9所述的裝置,其特征在于,所述控制命令包括獲取滿足預定條件的 數據,所述第三發(fā)送模塊包括:篩選子模塊,用于根據所述預定條件,通過所述用戶程序對所述執(zhí)行結果進行篩選;發(fā)送子模塊,用于通過所述第二通信程序向所述第一通信程序發(fā)送篩選出的滿足所述 預定條件的數據。
【文檔編號】G06F9/54GK106095602SQ201610459431
【公開日】2016年11月9日
【申請日】2016年6月22日
【發(fā)明人】郝健, 于洋, 王冰倩, 沈牧溪
【申請人】東軟集團股份有限公司