新四季網

一種進程間的通信方法和裝置製造方法

2023-12-07 01:03:21

一種進程間的通信方法和裝置製造方法
【專利摘要】本發明公開了一種進程間通信的方法,包括:主進程創建子進程宿主對象;主進程使用所述創建的子進程宿主對象啟動子進程,並向所述子進程發送第一命令;子進程啟動並接收來自主進程的第一命令;所述子進程創建對應的子進程對象;所述子進程對象向所述主進程發送啟動應答消息;主進程根據收到的啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄;所述主進程和所述子進程建立通信通道進行數據傳輸。基於這樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的複雜度,有效降低了運行和維護多個進程間通信的成本。
【專利說明】一種進程間的通信方法和裝置
【技術領域】
[0001]本發明涉及人機互動【技術領域】,具體涉及一種進程間的通信方法和裝置。
【背景技術】
[0002]進程是計算機系統分配資源的最小單位。每個進程都有自己的一部分獨立的系統資源,彼此是隔離的。為了能使不同的進程互相訪問資源並進行協調工作,就有了進程間通信(Inter-Process Communication, IPC)。所謂IPC通信就是指進程間的信息傳播或交換。
[0003]一般而言,主程序在運行過程中會運行對應的主進程,基於不同任務的需要往往還需要同時啟動並運行多個對應的子進程,而隨著子進程數量的增加,進程間通信的複雜度也隨之提高。這樣一來,如何有效控制多進程通信時的複雜度,減少數據傳輸錯誤和異常就成為本領域技術人員在實施進程間通信時需要解決的技術問題。

【發明內容】

[0004]鑑於上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種進程間的通信方法和裝置。
[0005]依據本發明的一個方面,提供了一種進程間的通信方法,所述方法包括:
[0006]主進程創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識;
[0007]主進程使用所述創建的子進程宿主對象啟動子進程,並向所述子進程發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄;
[0008]子進程啟動並接收來自主進程的第一命令;
[0009]所述子進程創建對應的子進程對象,並對所述子進程對象進行初始化;
[0010]所述子進程對象向所述主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識;
[0011]主進程收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄;
[0012]所述主進程和所述子進程建立通信通道進行數據傳輸。
[0013]可選地,所述主進程和所述子進程建立通信通道進行數據傳輸,具體包括:
[0014]所述主進程通過主進程通信接口句柄接收來自子進程的數據,並通過子進程宿主對象的子進程通信接口句柄向對應的子進程發送數據;
[0015]所述子進程通過子進程通信接口句柄接收來自主進程的數據,並通過主進程通信接口句柄向主進程發送數據。
[0016]可選地,所述方法還包括:
[0017]主進程判斷與子進程的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程發送第二命令;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數;[0018]當子進程接收到來自主進程的第二命令後,解析並執行所述第二命令。
[0019]可選地,所述主進程創建子進程宿主對象之前還包括:
[0020]主進程創建新的瀏覽器子窗口 ;
[0021]主進程創建子進程渲染宿主對象,並為所述子進程渲染宿主對象分配對應的渲染對象標識;
[0022]所述主進程創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識,具體包括:
[0023]主進程調用所述子進程渲染宿主對象的導航方法,在所述導航方法中創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識;
[0024]所述主進程通過所述子進程宿主對象向對應的子進程發送的第二命令包括:
[0025]渲染對象創建命令和對應的渲染對象標識;
[0026]所述子進程解析並執行所述第二命令,具體包括:
[0027]子進程判斷所述第二命令中是否包括渲染對象創建命令,若包括,則從所述第二命令中獲得對應的渲染對象標識,以及:
[0028]創建子進程渲染對象,並為該子進程渲染對象設置所述渲染對象標識;
[0029]創建子進程瀏覽器渲染對象,並使用子進程對象的方法向主進程發送渲染對象創建應答消息,所述渲染對象創建應答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄;
[0030]所述方法還包括:
[0031]若主進程收到來自子進程的渲染對象創建應答消息,則從所述渲染對象創建應答消息中獲得子進程瀏覽器窗口句柄,並將所述子進程瀏覽器窗口句柄的父窗口設置為當前瀏覽器子窗口。
[0032]可選地,
[0033]所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括:
[0034]子進程渲染對象導航命令和對應的目標網頁標識;
[0035]所述子進程解析並執行所述第二命令,還包括:
[0036]子進程判斷所述第二命令中是否包括子進程渲染對象導航命令,若包括,則從所述第二命令中獲得對應的目標網頁標識,以及:
[0037]子進程使用所述子進程瀏覽器渲染對象的導航方法導航所述目標網頁標識。
[0038]可選地,所述主進程通過子進程宿主對象向子進程發送的第一命令還包括:
[0039]登錄"[目息標識;
[0040]所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括:
[0041]網頁填充命令;
[0042]所述子進程解析並執行所述第二命令,還包括:
[0043]子進程判斷所述第二命令中是否包括網頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標識,以及:
[0044]子進程使用所述子進程瀏覽器渲染對象的網頁自動填充方法獲取所述登錄信息標識對應的登錄配置規則、登錄帳號和登錄密碼;對所述導航的目標網頁中登錄對象按所述登錄配置規則自動填充登錄帳號和登錄密碼。[0045]可選地,
[0046]所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括:窗口調整命令和對應的窗口大小參數;
[0047]所述子進程解析並執行所述第二命令,還包括:
[0048]子進程判斷所述第二命令中是否包括窗口調整命令,若包括,則從所述第二命令中獲得窗口大小參數,以及
[0049]子進程使用所述子進程瀏覽器渲染對象的窗口設置方法按照所述窗口大小參數設置子進程瀏覽器窗體大小。
[0050]根據本發明的另一方面,提供了一種進程間通信裝置,所述裝置包括:
[0051]包括主進程模塊、子進程模塊和數據通道;
[0052]所述主進程模塊包括:
[0053]子進程宿主對象模塊,用於創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識;
[0054]子進程啟動模塊,用於使用所述子進程宿主對象模塊創建的子進程宿主對象啟動子進程模塊;
[0055]第一命令發送模塊,用於向所述子進程啟動模塊啟動的子進程模塊發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄;
[0056]所述子進程模塊包括:
[0057]第一命令接收模塊,用於接收來自主進程模塊的第一命令;
[0058]子進程對象模塊,用於創建子進程對象,並對所述子進程對象進行初始化;
[0059]所述子進程對象模塊,還用於向主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識;
[0060]所述主進程模塊還包括:
[0061]第一消息響應模塊,用於收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄;
[0062]所述數據通道,用於主進程模塊和子進程模塊進行數據傳輸。
[0063]其中,所述數據通道,具體用於:
[0064]所述主進程模塊通過主進程通信接口句柄接收來自子進程模塊的數據,並通過子進程宿主對象的子進程通信接口句柄向對應的子進程模塊發送數據;
[0065]所述子進程模塊通過子進程通信接口句柄接收來自主進程模塊的數據,並通過主進程通信接口句柄向主進程模塊發送數據。
[0066]可選地,
[0067]所述主進程模塊還包括:
[0068]第二命令發送模塊,用於判斷與子進程模塊的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程模塊發送第二命令;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數;
[0069]所述子進程模塊還包括:
[0070]第二命令執行模塊,用於當子進程模塊接收到來自主進程模塊的第二命令後,解析並執行所述第二命令。
[0071]可選地,
[0072]所述主進程模塊還包括:
[0073]子窗口模塊,用於創建新的瀏覽器子窗口 ;
[0074]子進程渲染宿主對象模塊,用於創建子進程渲染宿主對象,並為所述子進程渲染宿主對象分配對應的渲染對象標識;
[0075]所述子進程宿主對象模塊,具體用於:
[0076]主進程模塊調用所述子進程渲染宿主對象的導航方法,在所述導航方法中創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識;
[0077]所述第二命令發送模塊通過所述子進程宿主對象向對應的子進程模塊發送的第二命令包括:
[0078]渲染對象創建命令和對應的渲染對象標識;
[0079]所述第二命令執行模塊,具體用於:
[0080]判斷所述第二命令中是否包括渲染對象創建命令,若包括,則從所述第二命令中獲得對應的渲染對象標識,以及:
[0081]創建子進程渲染對象,並為該子進程渲染對象設置所述渲染對象標識;
[0082]創建子進程瀏覽器渲染對象,並使用子進程對象的方法向主進程模塊發送渲染對象創建應答消息,所述渲染對象創建應答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄;
[0083]所述主進程模塊還包括:
[0084]第二消息響應模塊,用於若主進程模塊收到來自子進程模塊的渲染對象創建應答消息,則從所述渲染對象創建應答消息中獲得子進程瀏覽器窗口句柄,並將所述子進程瀏覽器窗口句柄的父窗口設置為當前瀏覽器子窗口。
[0085]可選地,
[0086]所述第二命令發送模塊通過子進程宿主對象向對應的子進程模塊發送的第二命令還包括:
[0087]子進程渲染對象導航命令和對應的目標網頁標識;
[0088]所述第二命令執行模塊,還用於:
[0089]判斷所述第二命令中是否包括子進程渲染對象導航命令,若包括,則從所述第二命令中獲得對應的目標網頁標識,以及:
[0090]使用所述子進程瀏覽器渲染對象的導航方法導航所述目標網頁標識。
[0091]可選地,所述第一命令發送模塊通過子進程宿主對象向子進程模塊發送的第一命令還包括:
[0092]登錄彳目息標識;
[0093]所述第二命令發送模塊通過子進程宿主對象向對應的子進程模塊發送的第二命令還包括:
[0094]網頁填充命令;
[0095]所述第二命令執行模塊,還用於:
[0096]判斷所述第二命令中是否包括網頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標識,以及:
[0097]使用所述子進程瀏覽器渲染對象的網頁自動填充方法獲取所述登錄信息標識對應的登錄配置規則、登錄帳號和登錄密碼;對所述導航的目標網頁中登錄對象按所述登錄配置規則自動填充登錄帳號和登錄密碼。
[0098]可選地,
[0099]所述第二命令發送模塊通過子進程宿主對象向對應的子進程模塊發送的第二命令還包括:窗口調整命令和對應的窗口大小參數;
[0100]所述第二命令執行模塊,還用於:
[0101]判斷所述第二命令中是否包括窗口調整命令,若包括,則從所述第二命令中獲得窗口大小參數,以及
[0102]使用所述子進程瀏覽器渲染對象的窗口設置方法按照所述窗口大小參數設置子進程瀏覽器窗體大小。
[0103]現有的進程間通信,隨著子進程數量的增加,主進程與子進程之間的通信複雜度也急劇增加,使得控制和維護成本居高不下。本發明實施例通過定義子進程宿主對象模型,並由主進程創建和管理子進程宿主對象,通過分配唯一的子進程標識建立子進程宿主對象和子進程對象之間的對應關係,通過交換進程通信接口句柄建立主進程與子進程之間的數據通道,使得主進程僅僅使用子進程標識確定子進程宿主對象就能夠實現對應的子進程對象的數據傳輸。基於這樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的複雜度,有效降低了運行和維護多個進程間通信的成本。
[0104]上述說明僅是本發明技術方案的概述,為了能夠更清楚了解本發明的技術手段,而可依照說明書的內容予以實施,並且為了讓本發明的上述和其它目的、特徵和優點能夠更明顯易懂,以下特舉本發明的【具體實施方式】。
【專利附圖】

【附圖說明】
[0105]通過閱讀下文優選實施方式的詳細描述,各種其他的優點和益處對於本領域普通技術人員將變得清楚明了。附圖僅用於示出優選實施方式的目的,而並不認為是對本發明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0106]圖1示出了根據本發明一個實施例的一種進程間通信方法的步驟流程圖;
[0107]圖2示出了根據本發明一個實施例的一種進程間通信方法的步驟流程圖;
[0108]圖3示出了根據本發明一個實施例的一種進程間通信方法的時序流程圖;
[0109]圖4示出了根據本發明一個實施例的一種進程間通信裝置的結構示意圖。
【具體實施方式】
[0110]下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現本公開而不應被這裡闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,並且能夠將本公開的範圍完整的傳達給本領域的技術人員。
[0111]實施例一
[0112]參照圖1,圖1示出了本發明實施例提供的一種進程間通信方法,所述方法包括:[0113]S101,主進程創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識。
[0114]本發明實施例中,主進程創建並管理子進程宿主對象,每個子進程宿主對象對應一個子進程,並擁有與所對應子進程相同的子進程標識。
[0115]S102,主進程使用所述創建的子進程宿主對象啟動子進程,並向所述子進程發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄。
[0116]子進程宿主對象中提供了創建和啟動子進程的方法,並提供了數據通信接口用於向子進程發送第一命令。
[0117]具體而言,主進程以命令行的方式通過調用子進程宿主對象提供的進程創建方法創建一個新的子進程,所述命令行包括所述第一命令。
[0118]其中,所謂句柄是作業系統中的一個唯一的整數值,用來標誌應用程式中的不同對象和同類對象中的不同的實例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控制項或者文件等。通過句柄可以訪問相應對象的信息。
[0119]S103,子進程啟動並接收來自主進程的第一命令。
[0120]S104,所述子進程創建對應的子進程對象,並對所述子進程對象進行初始化。
[0121]調用子進程對象提供的初始化方法對所述子進程對象進行初始化,在所述初始化方法中對所接收到的第一命令中攜帶的子進程標識、主進程通信接口句柄等命令行參數進行保存。
[0122]S105,所述子進程對象向所述主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識。
[0123]子進程對象初始化完成後,使用IPC向主進程發送啟動應答消息。
[0124]S106,主進程收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄。
[0125]至此,主進程中的每個子進程宿主對象就擁有了與其對應的子進程對象的子進程通信接口句柄,而每個子進程也獲得了對應主進程的通信接口句柄。基於獲得的子進程通信接口句柄,子進程宿主對象對外提供與對應的子進程對象進行進程間通信的通信接口,使得主進程能夠通過調用所述通信接口向對應的子進程發送數據。
[0126]S107,所述主進程和所述子進程建立通信通道進行數據傳輸。
[0127]其中,所述主進程和所述子進程建立通信通道通信通道進行數據傳輸,具體包括:
[0128]所述主進程通過主進程通信接口句柄接收來自子進程的數據,並通過子進程宿主對象的子進程通信接口句柄向對應的子進程發送數據;
[0129]所述子進程通過子進程通信接口句柄接收來自主進程的數據,並通過主進程通信接口句柄向主進程發送數據。
[0130]本發明實施例通過定義子進程宿主對象模型,並由主進程創建和管理子進程宿主對象,通過分配唯一的子進程標識建立子進程宿主對象和子進程對象之間的對應關係,通過交換進程通信接口句柄建立主進程與子進程之間的數據通道,使得主進程僅僅使用子進程標識確定子進程宿主對象就能夠實現對應的子進程對象的數據傳輸。基於這樣的進程間通信機制,即使主進程需要運行更多的子進程,也不會增加進程間通信的複雜度,有效降低了運行和維護多個進程間通信的成本。
[0131]在所述實施例一的另一擴展實施例中,所述方法還包括:
[0132]S108,主進程判斷與子進程的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程發送第二命令;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數。
[0133]S109,當子進程接收到來自主進程的第二命令後,解析並執行所述第二命令。
[0134]當主進程與子進程之間的數據通道建成後,主進程可根據實施需要向子進程發送第二命令,例如監聽命令、銷毀子進程命令等。需要說明的是,本領域技術人員可根據實際需要組織第二命令的指令內容和包含的參數,本發明對此不作具體限制。
[0135]在數據通道建成前,主進程緩存第二命令及其攜帶的參數,當檢測到數據通道建成後,則將之前緩存的第二命令及其攜帶的參數一起發送給對應的子進程。通過上述緩存機制,能夠將第二命令毫無遺漏地發往子進程,保證了通信的完整性。
[0136]實施例二
[0137]參照圖2,圖2示出了本發明實施例提供的一種進程間通信方法,所述方法包括:
[0138]S201,主進程創建新的瀏覽器子窗口。
[0139]S202,主進程創建子進程渲染宿主對象,並為所述子進程渲染宿主對象分配對應的渲染對象標識。
[0140]S203,主進程調用所述子進程渲染宿主對象的方法,在所述方法中創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識。
[0141]S204,主進程使用所述創建的子進程宿主對象啟動子進程,並向所述子進程發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄。
[0142]S205,子進程啟動並接收來自主進程的第一命令。
[0143]S206,子進程創建對應的子進程對象,並對所述子進程對象進行初始化。
[0144]子進程對象初始化的同時保存第一命令及其攜帶的參數。
[0145]S207,所述子進程對象向所述主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識。
[0146]S208,主進程收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄。
[0147]子進程宿主對象通過設置的子進程通信接口句柄即可訪問對應的子進程對象。
[0148]S209,所述主進程和所述子進程建立通信通道進行數據傳輸。
[0149]S210,主進程判斷與子進程的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程發送第二命令,所述第二命令包括:渲染對象創建命令和對應的渲染對象標識;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數。
[0150]S211,當子進程接收到來自主進程的第二命令後,解析並執行所述第二命令。
[0151]其中,子進程解析並執行所述第二命令具體包括:
[0152]子進程判斷所述第二命令中是否包括渲染對象創建命令,若包括,則從所述第二命令中獲得對應的渲染對象標識,以及:[0153]創建子進程渲染對象,並為該子進程渲染對象設置所述渲染對象標識;
[0154]創建子進程瀏覽器渲染對象,並使用子進程對象的發送方法向主進程發送渲染對象創建應答消息,所述渲染對象創建應答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄。
[0155]S212,若主進程收到來自子進程的渲染對象創建應答消息,則從所述渲染對象創建應答消息中獲得子進程瀏覽器窗口句柄,並將所述子進程瀏覽器窗口句柄的父窗口設置為當前瀏覽器子窗口。
[0156]若應用程式中需要打開運行多個瀏覽器子窗口時,主進程中創建並管理多個子進程渲染對象宿主,每個子進程渲染對象宿主對應一個子進程渲染對象,而每一個子進程渲染對象下面管理著一個子進程瀏覽器渲染對象,所述子進程瀏覽器渲染對象封裝了瀏覽器的webtoowser及其對應的操作,通過將子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄的父窗口設置為其對應的瀏覽器子窗口,即相當於在該瀏覽器子窗口中內嵌了一個IE瀏覽器窗口。
[0157]主進程通過渲染對象標識或子進程標識確定對應的子進程渲染對象宿主,並通過該子進程渲染對象宿主宿主對應的子進程渲染對象對瀏覽器子窗口中的內嵌webtoowser進行訪問和操作。
[0158]本發明實施例中,所述主進程創建瀏覽器子窗口以及子進程瀏覽器渲染對象封裝瀏覽器的webbrowser只是本發明優選的方法,本領域技術人員應當理解,在實施本發明時,按照子窗口所承載內容和目的的不同,主進程可創建任意類型的子窗口和對應的子進程窗口渲染對象,該子進程窗口渲染對象可封裝不同的對象及操作,本發明對此不作具體限制,例如創建一個視頻播放子窗口、CAD畫圖子窗口、或其他第三方軟體控制子窗口等。
[0159]在上述實施例二的另一擴展實施例中,所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括:子進程渲染對象導航命令和對應的目標網頁標識;
[0160]所述子進程解析並執行所述第二命令,還包括:
[0161]子進程判斷所述第二命令中是否包括子進程渲染對象導航命令,若包括,則從所述第二命令中獲得對應的目標網頁標識,以及:子進程使用所述子進程瀏覽器渲染對象的導航方法導航所述目標網頁標識。
[0162]其中,目標網頁標識具體可以是一個網頁URL,例如一個網站的登錄頁面URL,當用戶點擊該網頁URL的連結時,主進程創建一個瀏覽器子窗口,並在該瀏覽器子窗口中加載該網頁URL對應的網頁元素。
[0163]在上述實施例的另一擴展實施例中,所述主進程通過子進程宿主對象向子進程發送的第一命令還包括:登錄信息標識;
[0164]所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括:網頁填充命令;
[0165]所述子進程解析並執行所述第二命令,還包括:
[0166]子進程判斷所述第二命令中是否包括網頁填充命令,若包括,則從所述第一命令中獲得所述登錄信息標識,以及子進程使用所述子進程瀏覽器渲染對象的網頁自動填充方法獲取所述登錄信息標識對應的登錄配置規則、登錄帳號和登錄密碼;對所述導航的目標網頁中登錄對象按所述登錄配置規則自動填充登錄帳號和登錄密碼。[0167]實施例三
[0168]本實施例以具體的數據對象模型為例,對本發明提供的一種進程間通信方法進行描述,涉及的數據對象模型定義如下:
[0169]CApplication 應用程式
[0170]-CMainProcess 主進程
[0171]-CChiIdProcess 子進程
[0172]其中,主進程CMainProcess提供的數據模型如表1所示;子進程CChiIdProcess
提供的數據模型如表2所示:
[0173]
【權利要求】
1.一種進程間通信的方法,包括: 主進程創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識;主進程使用所述創建的子進程宿主對象啟動子進程,並向所述子進程發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄; 子進程啟動並接收來自主進程的第一命令; 所述子進程創建對應的子進程對象,並對所述子進程對象進行初始化; 所述子進程對象向所述主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識; 主進程收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄; 所述主進程和所述子進程建立通信通道進行數據傳輸。
2.如權利要求1所述的方法,其特徵在於,所述主進程和所述子進程建立通信通道進行數據傳輸,具體包括: 所述主進程通過主進程通信接口句柄接收來自子進程的數據,並通過子進程宿主對象的子進程通信接口句柄向對應的子進程發送數據; 所述子進程通過子進程通信接口句柄接收來自主進程的數據,並通過主進程通信接口句柄向主進程發送數據。
3.如權利要求1所 述的方法,其特徵在於,所述方法還包括: 主進程判斷與子進程的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程發送第二命令;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數; 當子進程接收到來自主進程的第二命令後,解析並執行所述第二命令。
4.如權利要求3所述的方法,其特徵在於,所述主進程創建子進程宿主對象之前還包括: 主進程創建新的瀏覽器子窗口; 主進程創建子進程渲染宿主對象,並為所述子進程渲染宿主對象分配對應的渲染對象標識; 所述主進程創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識,具體包括: 主進程調用所述子進程渲染宿主對象的導航方法,在所述導航方法中創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識; 所述主進程通過所述子進程宿主對象向對應的子進程發送的第二命令包括: 渲染對象創建命令和對應的渲染對象標識; 所述子進程解析並執行所述第二命令,具體包括: 子進程判斷所述第二命令中是否包括渲染對象創建命令,若包括,則從所述第二命令中獲得對應的渲染對象標識,以及: 創建子進程渲染對象,並為該子進程渲染對象設置所述渲染對象標識; 創建子進程瀏覽器渲染對象,並使用子進程對象的方法向主進程發送渲染對象創建應答消息,所述渲染對象創建應答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄; 所述方法還包括: 若主進程收到來自子進程的渲染對象創建應答消息,則從所述渲染對象創建應答消息中獲得子進程瀏覽器窗口句柄,並將所述子進程瀏覽器窗口句柄的父窗口設置為當前瀏覽器子窗口。
5.如權利要求4所述的方法,其特徵在於, 所述主進程通過子進程宿主對象向對應的子進程發送的第二命令還包括: 子進程渲染對象導航命令和對應的目標網頁標識; 所述子進程解析並執行所述第二命令,還包括: 子進程判斷所述第二命令中是否包括子進程渲染對象導航命令,若包括,則從所述第二命令中獲得對應的目標網頁標識,以及: 子進程使用所述子進程瀏覽器渲染對象的導航方法導航所述目標網頁標識。
6.一種進程間通信裝置,包括主進程模塊、子進程模塊和數據通道; 所述主進程模塊包括: 子進程宿主對象模塊,用於創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識; 子進程啟動模塊,用於使用所述子進程宿主對象模塊創建的子進程宿主對象啟動子進程模塊; 第一命令發送模塊,用於向所述子進程啟動模塊啟動的子進程模塊發送第一命令,所述第一命令行攜帶所述子進程標識、主進程通信接口句柄; 所述子進程模塊包括: 第一命令接收模塊,用於接收來自主進程模塊的第一命令; 子進程對象模塊,用於創建子進程對象,並對所述子進程對象進行初始化; 所述子進程對象模塊,還用於向主進程發送啟動應答消息,所述啟動應答消息攜帶所述子進程對象對應的子進程通信接口句柄、子進程標識; 所述主進程模塊還包括: 第一消息響應模塊,用於收到子進程的啟動應答消息後,根據所述啟動應答消息中的子進程標識確定對應的子進程宿主對象,並為所述子進程宿主對象設置對應的子進程通信接口句柄; 所述數據通道,用於主進程模塊和子進程模塊進行數據傳輸。
7.如權利要求6所述的裝置,其特徵在於,所述數據通道,具體用於: 所述主進程模塊通過主進程通信接口句柄接收來自子進程模塊的數據,並通過子進程宿主對象的子進程通信接口句柄向對應的子進程模塊發送數據; 所述子進程模塊通過子進程通信接口句柄接收來自主進程模塊的數據,並通過主進程通信接口句柄向主進程模塊發送數據。
8.如權利要求9所述的裝置,其特徵在於, 所述主進程模塊還包括: 第二命令發送模塊,用於判斷與子進程模塊的數據通道是否已建成,若建成,通過所述子進程宿主對象向對應的子進程模塊發送第二命令;若所述數據通道未建成,則緩存所述第二命令攜帶的命令參數; 所述子進程模塊還包括: 第二命令執行模塊,用於當子進程模塊接收到來自主進程模塊的第二命令後,解析並執行所述第二命令。
9.如權利要求8所述的裝置,其特徵在於, 所述主進程模塊還包括: 子窗口模塊,用於創建新的瀏覽器子窗口 ; 子進程渲染宿主對象模塊,用於創建子進程渲染宿主對象,並為所述子進程渲染宿主對象分配對應的渲染對象標識; 所述子進程宿主對象模塊,具體用於: 主進程模塊調用所述子進程渲染宿主對象的導航方法,在所述導航方法中創建子進程宿主對象,並為所述子進程宿主對象分配一個對應的子進程標識; 所述第二命令發送模塊通過所述子進程宿主對象向對應的子進程模塊發送的第二命令包括: 渲染對象創建命令和對應的渲染對象標識; 所述第二命令執行模塊,具體用於: 判斷所述第二命令中是否包括渲染對象創建命令,若包括,則從所述第二命令中獲得對應的渲染對象標識,以及: 創建子進程渲染對象,並為該子進程渲染對象設置所述渲染對象標識; 創建子進程瀏覽器渲染對象,並使用子進程對象的方法向主進程模塊發送渲染對象創建應答消息,所述渲染對象創建應答消息攜帶所述子進程瀏覽器渲染對象的子進程瀏覽器窗口句柄; 所述主進程模塊還包括: 第二消息響應模塊,用於若主進程模塊收到來自子進程模塊的渲染對象創建應答消息,則從所述渲染對象創建應答消息中獲得子進程瀏覽器窗口句柄,並將所述子進程瀏覽器窗口句柄的父窗口設置為當前瀏覽器子窗口。
10.如權利要求9所述的裝置,其特徵在於, 所述第二命令發送模塊通過子進程宿主對象向對應的子進程模塊發送的第二命令還包括: 子進程渲染對象導航命令和對應的目標網頁標識; 所述第二命令執行模塊,還用於: 判斷所述第二命令中是否包括子進程渲染對象導航命令,若包括,則從所述第二命令中獲得對應的目標網頁標識,以及: 使用所述子進程瀏覽器渲染對象的導航方法導航所述目標網頁標識。
【文檔編號】G06F9/54GK103631664SQ201310661786
【公開日】2014年3月12日 申請日期:2013年12月9日 優先權日:2013年12月9日
【發明者】李超, 張菊元 申請人:北京奇虎科技有限公司, 奇智軟體(北京)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀