執(zhí)行操作指令方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種執(zhí)行操作指令的方法,包括:預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令;所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件。本發(fā)明還公開(kāi)了一種執(zhí)行操作指令的裝置。本發(fā)明可以使得具有普通權(quán)限的進(jìn)程可以同時(shí)具有執(zhí)行具有普通權(quán)限的操作和具有系統(tǒng)權(quán)限的操作的能力。
【專利說(shuō)明】執(zhí)行操作指令方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及一種執(zhí)行操作指令方法和裝置。
【背景技術(shù)】
[0002]計(jì)算機(jī)操作系統(tǒng)平臺(tái)為了系統(tǒng)的安全、穩(wěn)定,為不同進(jìn)程設(shè)置了不同的操作權(quán)限級(jí)別。其中,系統(tǒng)權(quán)限是操作系統(tǒng)平臺(tái)中的一個(gè)權(quán)限級(jí)別,具有系統(tǒng)權(quán)限的進(jìn)程除了可以操作普通進(jìn)程的功能外,還可以處理一些更為高級(jí)的操作,這些操作對(duì)整個(gè)系統(tǒng)平臺(tái)將會(huì)產(chǎn)生影響。相應(yīng)地,普通權(quán)限是操作系統(tǒng)平臺(tái)中的另一個(gè)權(quán)限級(jí)別,是普通進(jìn)程(應(yīng)用進(jìn)程)所具有的權(quán)限,為了保證系統(tǒng)的安全、穩(wěn)定,系統(tǒng)平臺(tái)對(duì)普通進(jìn)程的訪問(wèn)能力、操作能力都做了 一定的限制。
[0003]安卓(Android)系統(tǒng)平臺(tái)是基于Linux內(nèi)核開(kāi)發(fā)一款開(kāi)放式系統(tǒng)平臺(tái),因此Android系統(tǒng)繼承了 Linux嚴(yán)格的權(quán)限分級(jí)制度,其中包含具有系統(tǒng)權(quán)限的進(jìn)程和具有普通權(quán)限的進(jìn)程。具有系統(tǒng)權(quán)限的進(jìn)程基本上可以執(zhí)行Android系統(tǒng)的例如系統(tǒng)設(shè)置、接口調(diào)用等絕大多數(shù)的操作,而具有普通權(quán)限的進(jìn)程則在例如數(shù)據(jù)訪問(wèn)、系統(tǒng)設(shè)置等方面受到了諸多限制。可見(jiàn),僅具有普通權(quán)限的進(jìn)程由于不能執(zhí)行具有系統(tǒng)權(quán)限的進(jìn)程才能執(zhí)行的操作,給用戶使用帶來(lái)很大不便。
[0004]現(xiàn)有在Android系統(tǒng)中,一般使用用戶標(biāo)識(shí)(user id)區(qū)分每一個(gè)進(jìn)程,具有相同用戶標(biāo)識(shí)的進(jìn)程被認(rèn)為是同一個(gè)進(jìn)程,他們可以共享相互的數(shù)據(jù),另外,Android系統(tǒng)一般使用數(shù)字簽名技術(shù)來(lái)保護(hù)所發(fā)布的應(yīng)用程序,如果具有相同用戶標(biāo)識(shí)的多個(gè)進(jìn)程具有不同的簽名,則后進(jìn)行安裝的應(yīng)用程序?qū)o(wú)法安裝到系統(tǒng)中。所以要使得將具有普通權(quán)限的進(jìn)程被系統(tǒng)視為具有系統(tǒng)權(quán)限的進(jìn)程,除了需要具有相同的用戶標(biāo)識(shí)外,還需要具有相同的數(shù)字簽名,具備了上述兩個(gè)條件,即可在相同的環(huán)境下編譯出可執(zhí)行文件,這樣生成的應(yīng)用程序則可以在同一個(gè)系統(tǒng)平臺(tái)上和平共處,運(yùn)行時(shí)被認(rèn)為是同一個(gè)進(jìn)程??梢?jiàn),該現(xiàn)有方法中,在上述生成的應(yīng)用程序中,雖然可以將具有普通權(quán)限的進(jìn)程被變?yōu)橐粋€(gè)具有系統(tǒng)權(quán)限的進(jìn)程,但該方法不能使得此進(jìn)程再同時(shí)具備普通權(quán)限的進(jìn)程的執(zhí)行能力。
[0005]例如,現(xiàn)有在Android系統(tǒng)中,具有系統(tǒng)權(quán)限的進(jìn)程也具有局限性,某些操作被定義為具有系統(tǒng)權(quán)限的進(jìn)程不能執(zhí)行、而具有普通權(quán)限的進(jìn)程可以執(zhí)行的操作,例如,具有系統(tǒng)權(quán)限的進(jìn)程不能訪問(wèn)SD卡(例如讀、寫(xiě)SD卡),僅能對(duì)SD卡設(shè)備進(jìn)行管理(例如掛載、卸載、格式化等等)。然而,具有普通權(quán)限的進(jìn)程通過(guò)聲明SD卡訪問(wèn)許可,即可獲得訪問(wèn)SD卡(例如讀、寫(xiě)SD卡)的權(quán)限,但是,具有普通權(quán)限的進(jìn)程不能對(duì)SD卡設(shè)備進(jìn)行管理(例如掛載、卸載、格式化等等)。
[0006]本方法雖然可將具有普通權(quán)限的進(jìn)程被變?yōu)橐粋€(gè)具有系統(tǒng)權(quán)限的進(jìn)程,以使得其具有管理SD卡的能力,但是,當(dāng)其在管理SD卡的同時(shí),并不能訪問(wèn)SD卡??梢?jiàn),現(xiàn)有的方法不能使得此進(jìn)程同時(shí)具備訪問(wèn)和管理SD卡設(shè)備的能力。
[0007]綜上,現(xiàn)有上述方法中,雖然可將具有普通權(quán)限的進(jìn)程被變?yōu)橐粋€(gè)具有系統(tǒng)權(quán)限的進(jìn)程,但是,一旦被改變后使其具備系統(tǒng)權(quán)限的進(jìn)程的執(zhí)行能力時(shí),不能再同時(shí)具備普通權(quán)限的進(jìn)程的執(zhí)行能力。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的目的在于提出一種執(zhí)行操作指令方法和裝置,使得同一進(jìn)程可以同時(shí)具有執(zhí)行不同權(quán)限操作的執(zhí)行能力。
[0009]本發(fā)明公開(kāi)了一種執(zhí)行操作指令的方法,包括:
[0010]預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令;
[0011]所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件。
[0012]優(yōu)選地,所述第一進(jìn)程為具有普通權(quán)限的進(jìn)程,所述第二進(jìn)程為具有系統(tǒng)權(quán)限的進(jìn)程。
[0013]優(yōu)選地,所述方法還包括:
[0014]所述第一進(jìn)程的功能部件在第一進(jìn)程需要處理所述代理操作指令時(shí),啟動(dòng)第二進(jìn)程的服務(wù)部件;以及
[0015]在所有的代理操作指令執(zhí)行完成后,所述第一進(jìn)程的功能部件關(guān)閉第二進(jìn)程的服務(wù)部件。 [0016]優(yōu)選地,所述預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令包括:
[0017]所述功能部件獲取代理操作指令;
[0018]所述功能部件基于所述代理操作指令生成進(jìn)程間通信消息;
[0019]所述功能部件向所述服務(wù)部件發(fā)送所述進(jìn)程間通信消息。
[0020]優(yōu)選地,所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令包括:
[0021]解析接收到的進(jìn)程間通信消息獲得所述代理操作指令;
[0022]執(zhí)行所述代理操作指令。
[0023]優(yōu)選地,所述第二進(jìn)程的服務(wù)部件通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件包括:
[0024]根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息;
[0025]向所述第一進(jìn)程的功能部件發(fā)送所述進(jìn)程間反饋消息。
[0026]優(yōu)選地,所述進(jìn)程間通信接口為套接字接口(Socket);
[0027]所述代理操作指令通過(guò)Socket請(qǐng)求消息發(fā)送;
[0028]所述執(zhí)行結(jié)果通過(guò)Socket響應(yīng)消息發(fā)送。
[0029]優(yōu)選地,所述服務(wù)部件創(chuàng)建監(jiān)聽(tīng)工作線程,通過(guò)所述監(jiān)聽(tīng)工作線程與所述功能部件建立通?目連接;
[0030]所述服務(wù)部件在與所述功能部件建立通信連接后,創(chuàng)建通信工作線程與所述功能部件通信。
[0031]本發(fā)明還公開(kāi)了一種執(zhí)行操作指令的裝置,包括預(yù)置在第一進(jìn)程中的功能部件和預(yù)置在第二進(jìn)程的服務(wù)部件;
[0032]所述功能部件用于通過(guò)進(jìn)程間通信接口向預(yù)置在第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令;
[0033]所述服務(wù)部件用于接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件;
[0034]所述代理操作指令為第一進(jìn)程不具有操作權(quán)限而第二進(jìn)程具有操作權(quán)限的操作指令。
[0035]優(yōu)選地,所述第一進(jìn)程為具有普通權(quán)限的進(jìn)程,所述第二進(jìn)程為具有系統(tǒng)權(quán)限的進(jìn)程。
[0036]優(yōu)選地,所述功能部件還包括:
[0037]服務(wù)啟動(dòng)子單元,用于在第一進(jìn)程需要處理所述代理操作指令時(shí)啟動(dòng)第二進(jìn)程的服務(wù)部件; [0038]服務(wù)關(guān)閉子單元,用于在所有的代理操作指令執(zhí)行完成后關(guān)閉所述第二進(jìn)程的服務(wù)部件。
[0039]優(yōu)選地,所述功能部件包括:
[0040]指令獲取子單元,用于獲取代理操作指令;
[0041]消息生成子單元,用于基于所述代理操作指令生成進(jìn)程間通信消息;
[0042]消息發(fā)送子單元,用于向所述服務(wù)部件發(fā)送所述進(jìn)程間通信消息。
[0043]優(yōu)選地,所述服務(wù)部件包括:
[0044]解析子單元,用于解析接收到的進(jìn)程間通信消息獲得所述代理操作指令;
[0045]執(zhí)行子單元,用于執(zhí)行所述代理操作指令。
[0046]優(yōu)選地,所述服務(wù)部件包括:
[0047]反饋消息生成子單元,用于根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息;
[0048]反饋?zhàn)訂卧?,用于向所述第一進(jìn)程的功能部件發(fā)送所述進(jìn)程間反饋消息。
[0049]優(yōu)選地,所述進(jìn)程間通信接口為套接字接口(Socket);
[0050]所述代理操作指令通過(guò)Socket請(qǐng)求消息發(fā)送;
[0051]所述執(zhí)行結(jié)果通過(guò)Socket響應(yīng)消息發(fā)送。
[0052]優(yōu)選地,所述服務(wù)部件創(chuàng)建監(jiān)聽(tīng)工作線程,通過(guò)所述監(jiān)聽(tīng)工作線程與所述功能部件建立通?目連接;
[0053]所述服務(wù)部件在與所述功能部件建立通信連接后,創(chuàng)建通信工作線程與所述功能部件通信。
[0054]本發(fā)明通過(guò)在第二進(jìn)程中設(shè)置服務(wù)部件,第一進(jìn)程中的功能部件將操作指令通過(guò)進(jìn)程間通信接口發(fā)送到第二進(jìn)程,由第二進(jìn)程來(lái)執(zhí)行所述操作指令后將結(jié)果返回給第一進(jìn)程,從而使得第一進(jìn)程可以執(zhí)行第二進(jìn)程才能執(zhí)行的操作,使得第一進(jìn)程可以同時(shí)具有第一進(jìn)程和第二進(jìn)程的執(zhí)行能力。
[0055]進(jìn)一步地,若第二進(jìn)程相比第一進(jìn)程具有較高執(zhí)行權(quán)限,第一進(jìn)程的功能部件將具有較高權(quán)限的操作指令通過(guò)進(jìn)程間的通訊接口發(fā)送到第二進(jìn)程的服務(wù)部件,由第二進(jìn)程的服務(wù)部件來(lái)代理執(zhí)行所述操作指令后,將結(jié)果反饋給第一進(jìn)程,從而使得第一進(jìn)程可以同時(shí)具有執(zhí)行較低權(quán)限操作和較高權(quán)限操作的執(zhí)行能力。
[0056]通過(guò)利用本發(fā)明,不但避免了操作系統(tǒng)原有的將較低權(quán)限進(jìn)程改變?yōu)檩^高權(quán)限進(jìn)程的苛刻步驟,還能解決部分較低權(quán)限操作和較高權(quán)限操作不能同時(shí)執(zhí)行的問(wèn)題,對(duì)于應(yīng)用程序功能設(shè)計(jì)、開(kāi)發(fā)解決了局限性限制。
【專利附圖】
【附圖說(shuō)明】
[0057]圖1是本發(fā)明第一實(shí)施例的執(zhí)行操作指令的方法的流程圖;
[0058]圖2是本發(fā)明第二實(shí)施例的執(zhí)行操作指令的方法的流程圖;
[0059]圖3是本發(fā)明第三實(shí)施例的執(zhí)行操作指令的方法中功能部件的工作流程圖;
[0060]圖4是本發(fā)明第三實(shí)施例的執(zhí)行操作指令的方法中服務(wù)部件的流程圖;
[0061]圖5是本發(fā)明第三實(shí)施例創(chuàng)建的通信工作線程的工作流程圖;
[0062]圖6是本發(fā)明第四實(shí)施例的執(zhí)行操作指令的裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0063]下面結(jié)合附圖并通過(guò)【具體實(shí)施方式】來(lái)進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案。
[0064]圖1是本發(fā)明第一實(shí)施例的執(zhí)行操作指令的方法的流程圖。如圖1所示,所述方法包括:
[0065]步驟110、預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向預(yù)置于第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令。
[0066]在本發(fā)明中,進(jìn)程是指程序的一次運(yùn)行實(shí)例,即一個(gè)正在執(zhí)行的程序。所述代理操作指令為第一進(jìn)程不具有操作權(quán)限而第二進(jìn)程具有操作權(quán)限的操作指令。
[0067]步驟120、所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件;
[0068]其中,優(yōu)選地,該方法可以應(yīng)用于Android系統(tǒng)中,所述第一進(jìn)程為具有普通權(quán)限的進(jìn)程,所述第二進(jìn)程為具有系統(tǒng)權(quán)限的進(jìn)程。
[0069]而且,本實(shí)施例中所述的進(jìn)程間通信接口為用于不同進(jìn)程之間傳播或交換信息的接口,本領(lǐng)域技術(shù)人員可以選擇通過(guò)套接字接口(Socket)進(jìn)行進(jìn)程間通信,也可以選擇基于Binder類(lèi)進(jìn)行進(jìn)程間通訊,還可以選擇通過(guò)共享文件方式或共享內(nèi)存方式進(jìn)行進(jìn)程間通訊,還可以選擇通過(guò)廣播方式的進(jìn)程間通訊或通過(guò)自定義消息方式的進(jìn)程間通訊。
[0070]本實(shí)施例通過(guò)在具有較高權(quán)限的第二進(jìn)程中設(shè)置服務(wù)部件,通過(guò)具有較低權(quán)限的第一進(jìn)程中的功能部件將超出其權(quán)限的操作指令通過(guò)進(jìn)程間通信接口發(fā)送到具有較高權(quán)限的第二進(jìn)程,由第二進(jìn)程來(lái)執(zhí)行所述操作指令后將結(jié)果返回給第一進(jìn)程,從而使得具有較低權(quán)限的第一進(jìn)程可以執(zhí)行只有較高權(quán)限進(jìn)程才能執(zhí)行的操作,使得第一進(jìn)程可以同時(shí)具有執(zhí)行較低權(quán)限操作和較高權(quán)限操作的能力。
[0071]圖2是本發(fā)明第二實(shí)施例的執(zhí)行操作指令的方法的流程圖。如圖2所示,第二實(shí)施的方法包括:
[0072]步驟210、第一進(jìn)程的功能部件在第一進(jìn)程需要處理所述代理操作指令時(shí)啟動(dòng)第二進(jìn)程的服務(wù)部件。
[0073]需要進(jìn)一步說(shuō)明的是,功能部件是第一進(jìn)程的一個(gè)內(nèi)置模塊,專門(mén)負(fù)責(zé)與服務(wù)部件進(jìn)行通訊,它將具有較低權(quán)限的進(jìn)程要實(shí)現(xiàn)的需要具有系統(tǒng)權(quán)限才能執(zhí)行的功能轉(zhuǎn)換成指令請(qǐng)求,然后發(fā)送給服務(wù)部件代理執(zhí)行,并接收服務(wù)部件反饋的執(zhí)行結(jié)果,將結(jié)果報(bào)告給第一進(jìn)程。服務(wù)部件是第二進(jìn)程的一個(gè)內(nèi)置模塊,第二進(jìn)程對(duì)應(yīng)的程序可以通過(guò)將服務(wù)部件的代碼加入原有的具有系統(tǒng)權(quán)限的進(jìn)程中進(jìn)行編譯獲得。
[0074]在本實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,對(duì)于某些操作系統(tǒng),例如Android系統(tǒng),進(jìn)程可以通過(guò)標(biāo)準(zhǔn)API (Application Programming Interface,應(yīng)用程序編程接口)調(diào)用啟動(dòng)其它進(jìn)程的服務(wù)(Service),由此,可以將第二進(jìn)程的服務(wù)部件以服務(wù)的形式預(yù)置在第二進(jìn)程中,也即,在系統(tǒng)源代碼環(huán)境下,找到具有系統(tǒng)權(quán)限的第二進(jìn)程源碼,在其進(jìn)程中添加一個(gè)服務(wù)(Service),然后實(shí)現(xiàn)此服務(wù)的各項(xiàng)功能的代碼,例如通訊功能、指令功能等,這樣就使得第二進(jìn)程添加了一個(gè)服務(wù)部件,它將存在于編譯后生成的程序中,其可響應(yīng)于第一進(jìn)程的功能部件的調(diào)用而啟動(dòng)和關(guān)閉。由此,可以避免出現(xiàn)服務(wù)部件需要始終運(yùn)行的情況,節(jié)省系統(tǒng)資源。
[0075]步驟220、功能部件與服務(wù)部件建立進(jìn)程間通信接口連接。
[0076]步驟230、預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向預(yù)置在第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令。
[0077]所述代理操作指令為第一進(jìn)程不具有操作權(quán)限而第二進(jìn)程具有操作權(quán)限的操作指令。其中,步驟230具體包括:
[0078]步驟231、獲取代理操作指令。
[0079]步驟232、基于所述代理操作指令生成進(jìn)程間通信消息。
[0080]步驟233、向所述服務(wù)部件發(fā)送所述進(jìn)程間通信消息。
[0081 ] 所述進(jìn)程間通信接口可以是Socket接口、Binder類(lèi)接口或其它方式。
[0082]步驟240、所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件。
[0083]其中,步驟240具體包括:
[0084]步驟241、解析接收到的進(jìn)程間通信消息獲得所述代理操作指令。
[0085]步驟242、執(zhí)行所述代理操作指令。
[0086]步驟243、根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息;
[0087]步驟244、向所述第一進(jìn)程的功能部件發(fā)送所述進(jìn)程間反饋消息。
[0088]其中,進(jìn)程間通信消息和進(jìn)程間反饋消息的形式根據(jù)所選用的進(jìn)程間通信接口的類(lèi)型確定。例如,在Socket接口方式下,進(jìn)程間通信消息為Socket Request消息,而進(jìn)程間反饋消息為Socket Respond消息。
[0089]步驟250、判斷是否所有的代理操作指令已處理完成,若否,則執(zhí)行步驟230,若是則執(zhí)行步驟260。
[0090]在本實(shí)施例中,通過(guò)循環(huán)來(lái)執(zhí)行多個(gè)需要執(zhí)行的代理操作指令。
[0091]步驟260、第一進(jìn)程的功能部件通過(guò)在所有的代理操作指令執(zhí)行完成后斷開(kāi)與服務(wù)部件的通訊連接。
[0092]步驟270、關(guān)閉所述第二進(jìn)程的服務(wù)部件。
[0093]與步驟210類(lèi)似,通過(guò)系統(tǒng)API來(lái)關(guān)閉第二進(jìn)程的服務(wù)部件。由此實(shí)現(xiàn)對(duì)于系統(tǒng)資源的節(jié)省。
[0094]本實(shí)施例通過(guò)第一進(jìn)程的功能部件觸發(fā)開(kāi)啟和關(guān)閉第二進(jìn)程的服務(wù)部件,從而僅在需要執(zhí)行代理操作指令時(shí)保持服務(wù)部件開(kāi)啟,在實(shí)現(xiàn)具有較低權(quán)限的第一進(jìn)程能夠同時(shí)執(zhí)行低權(quán)限操作和高權(quán)限操作的同時(shí),進(jìn)一步節(jié)省了系統(tǒng)資源。[0095]圖3是本發(fā)明第三實(shí)施例的執(zhí)行操作指令的方法中功能部件的工作流程圖。本實(shí)施例選擇Socket接口作為第一進(jìn)程(在本實(shí)施例中為具有普通權(quán)限的進(jìn)程)和第二進(jìn)程(在本實(shí)施例中為具有系統(tǒng)權(quán)限的進(jìn)程)之間的通信接口,服務(wù)部件以服務(wù)的形式預(yù)置與第二進(jìn)程中,服務(wù)部件和功能部件預(yù)先配置了相匹配的通信端口和彼此支持的指令類(lèi)型。如圖3所示,第一進(jìn)程的功能部件的工作流程包括:
[0096]步驟310、啟動(dòng)具有系統(tǒng)權(quán)限的進(jìn)程的服務(wù)部件。
[0097]步驟320、創(chuàng)建一個(gè)Socket作為客戶端,通過(guò)預(yù)定端口向服務(wù)器端發(fā)起連接。
[0098]步驟330、判斷連接是否成功,如果是,則執(zhí)行步驟340,如果否,結(jié)束客戶端工作流程和/或報(bào)錯(cuò)。
[0099]步驟340、獲取需要執(zhí)行的代理操作指令總數(shù),將當(dāng)前任務(wù)序號(hào)初始化為O。
[0100]本步驟通過(guò)設(shè)置任務(wù)序號(hào)并后續(xù)累加的方式來(lái)計(jì)算需要處理的代理操作指令的實(shí)際處理情況。
[0101]步驟350、判斷當(dāng)前任務(wù)序號(hào)是否小于所述代理操作指令總數(shù),如果是,則執(zhí)行步驟360,如果否,則執(zhí)行步驟3D0。
[0102]當(dāng)任務(wù)序號(hào)不小于代理操作指令總數(shù)時(shí),說(shuō)明待處理的代理操作指令處理完成或者進(jìn)程出現(xiàn)問(wèn)題,這時(shí)跳轉(zhuǎn)到步驟3D0開(kāi)始線程的關(guān)閉操作。
[0103]步驟360、取出當(dāng)前代理操作指令,根據(jù)當(dāng)前代理操作指令生成Request信息。
[0104]步驟370、通過(guò)Socket客戶端向Socket服務(wù)器端發(fā)送生成的Request信息。
[0105]步驟380、等待Socket服務(wù)器端返回Response信息。
[0106]步驟390、接收并解析Response信息獲得當(dāng)前代理操作指令的執(zhí)行結(jié)果。
[0107]在獲得執(zhí)行結(jié)果后,第一進(jìn)程的功能部件對(duì)執(zhí)行結(jié)果進(jìn)行對(duì)應(yīng)的處理。
[0108]步驟3A0、判斷執(zhí)行結(jié)果是否處理成功,如果是,則執(zhí)行步驟3C0,如果否,則執(zhí)行步驟3B0。
[0109]步驟3B0、判斷是否需要處理下個(gè)代理操作指令,如果是,則執(zhí)行步驟3C0,如果否,則執(zhí)行步驟3D0。
[0110]步驟3C0、當(dāng)前任務(wù)序號(hào)加I,跳轉(zhuǎn)步驟350。
[0111]步驟3D0、斷開(kāi)連接,關(guān)閉Socket客戶端。
[0112]步驟3E0、關(guān)閉具有系統(tǒng)權(quán)限的進(jìn)程的服務(wù)部件。
[0113]圖4是本發(fā)明第三實(shí)施例的執(zhí)行操作指令的方法中服務(wù)部件的流程圖。如圖4所示,服務(wù)部件的工作流程包括:
[0114]步驟410、服務(wù)部件啟動(dòng),創(chuàng)建監(jiān)聽(tīng)工作線程。
[0115]服務(wù)部件啟動(dòng)時(shí),會(huì)創(chuàng)建一個(gè)監(jiān)聽(tīng)工作線程,監(jiān)聽(tīng)工作線程負(fù)責(zé)接收來(lái)自外界客戶端的鏈接請(qǐng)求,并根據(jù)連接請(qǐng)求建立具體用于與客戶端通信的工作線程。
[0116]步驟420、創(chuàng)建一個(gè)用于與客戶端通信的Socket端口鏈表。
[0117]步驟430、創(chuàng)一個(gè)Socket服務(wù),配置監(jiān)聽(tīng)端口,初始化監(jiān)聽(tīng)超時(shí)時(shí)間。
[0118]步驟440、初始化結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)為False。
[0119]步驟450、判斷結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)是否為T(mén)rue,如果是,則執(zhí)彳了步驟4A0,如果否,則執(zhí)行步驟460。
[0120]服務(wù)部件可以通過(guò)將結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)設(shè)置為T(mén)rue觸發(fā)監(jiān)聽(tīng)工作線程自行啟動(dòng)關(guān)閉流程。監(jiān)聽(tīng)工作線程在循環(huán)過(guò)程中,在步驟450檢測(cè)到結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)為T(mén)rue即跳轉(zhuǎn)步驟4A0啟動(dòng)關(guān)閉流程。
[0121]步驟460、監(jiān)聽(tīng)預(yù)定的端口并判斷監(jiān)聽(tīng)是否超時(shí),如果超時(shí),則執(zhí)行步驟450,如果監(jiān)聽(tīng)到Socket客戶端的連接請(qǐng)求,則執(zhí)行步驟470。
[0122]步驟470、生成一個(gè)與對(duì)應(yīng)的Socket客戶端通信的Socket端口。
[0123]步驟480、將該Socket端口加入Socket鏈表。
[0124]步驟490、創(chuàng)建通信工作線程作為此Socket端口與Socket客戶端通訊的專用線程,返回步驟450。
[0125]在本實(shí)施例中,一個(gè)服務(wù)部件可以為多個(gè)客戶端服務(wù),達(dá)到了共用的目的,各自獨(dú)立,不相互影響。監(jiān)聽(tīng)工作線程可以根據(jù)監(jiān)聽(tīng)到的Socket客戶的連接請(qǐng)求生成多個(gè)Socket端口,并對(duì)應(yīng)建立多個(gè)通信工作線程分別與不同的Socket客戶端通信。
[0126]步驟4A0、遍歷Socket鏈表,關(guān)閉鏈表中所有的Socket端口。
[0127]步驟4B0、關(guān)閉Socket服務(wù)器端。
[0128]步驟4C0、監(jiān)聽(tīng)工作線程運(yùn)行結(jié)束。
[0129]當(dāng)服務(wù)部件被觸發(fā)關(guān)閉時(shí),服務(wù)部件將結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)置為T(mén)rue,并等待監(jiān)聽(tīng)工作進(jìn)程結(jié)束。監(jiān)聽(tīng)工作進(jìn)程在步驟450判斷結(jié)束監(jiān)聽(tīng)標(biāo)識(shí)被置為T(mén)rue后,跳轉(zhuǎn)到步驟4A0啟動(dòng)進(jìn)程結(jié)束流程。當(dāng)監(jiān)聽(tīng)工作進(jìn)程被結(jié)束后,服務(wù)部件關(guān)閉。
[0130]圖5是步驟490中創(chuàng)建的通信工作線程的工作流程圖。如圖5所示,通信工作線程的工作流程包括:
[0131]步驟510、讀取Socket客戶端發(fā)送的Request信息。
[0132]步驟520、判斷讀取操作是否發(fā)生異常(Exception),如果是,執(zhí)行步驟590,如果否,執(zhí)行步驟530。
[0133]步驟530、解析Request信息得到代理操作指令。
[0134]步驟540、判斷第二進(jìn)程是否支持所述代理操作指令,如果支持,則執(zhí)行步驟550,如果不支持,則返回步驟510,對(duì)下一條Request消息進(jìn)行處理。
[0135]步驟550、執(zhí)行所述代理操作指令,獲取執(zhí)行結(jié)果。
[0136]步驟560、根據(jù)執(zhí)行結(jié)果生成Response信息。
[0137]步驟570、向Socket客戶端發(fā)送Response信息。
[0138]步驟580、判斷發(fā)送操作是否發(fā)生異常,如果是,執(zhí)行步驟590,如果否,返回步驟510,對(duì)下一條Request消息進(jìn)行處理。
[0139]步驟590、判斷Socket服務(wù)器端或者Socket客戶端是否已關(guān)閉,如果是,則執(zhí)行步驟5A0,否則返回步驟510。
[0140]步驟5A0、通訊工作線程結(jié)束運(yùn)行。
[0141]當(dāng)服務(wù)部件關(guān)閉時(shí),Socket服務(wù)器端被關(guān)閉,當(dāng)功能部件關(guān)閉時(shí),Socket客戶端會(huì)被關(guān)閉,這時(shí)在讀取操作或發(fā)送操作時(shí)會(huì)出現(xiàn)異常,由此,提供了通信工作線程的關(guān)閉機(jī)制。
[0142]在本實(shí)施例中,通過(guò)將服務(wù)部件以能從外部觸發(fā)啟動(dòng)和關(guān)閉的服務(wù)(Service)方式嵌入具有系統(tǒng)權(quán)限的進(jìn)程中,由所述服務(wù)建立監(jiān)聽(tīng)工作線程來(lái)與功能部件的Socket客戶端建立連接,同時(shí),由監(jiān)聽(tīng)工作線程在建立連接后進(jìn)一步建立單獨(dú)的通信工作線程與對(duì)應(yīng)的Socket客戶端通信,獲取、執(zhí)行并反饋代理操作指令。由此,本實(shí)施例不但避免了操作系統(tǒng)原有的將較低權(quán)限進(jìn)程改變?yōu)檩^高權(quán)限進(jìn)程的苛刻步驟,還能解決部分較低權(quán)限操作和較高權(quán)限操作不能同時(shí)執(zhí)行的問(wèn)題,對(duì)于應(yīng)用程序功能設(shè)計(jì)、開(kāi)發(fā)解決了局限性限制。
[0143]圖6是本發(fā)明第四實(shí)施例的執(zhí)行操作指令的裝置的結(jié)構(gòu)框圖。如圖6所示,所述裝置包括預(yù)置在第一進(jìn)程61中的功能部件62和預(yù)置在第二進(jìn)程63的服務(wù)部件64。其中,第一進(jìn)程61具有較低的權(quán)限,而第二進(jìn)程63具有較高的權(quán)限。
[0144]功能部件62用于通過(guò)進(jìn)程間通信接口向預(yù)置在第二進(jìn)程63的服務(wù)部件64發(fā)送代理操作指令。
[0145]服務(wù)部件64用于接收并執(zhí)行代理操作指令,并通過(guò)進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程61的功能部件62。
[0146]所述代理操作指令為第一進(jìn)程61不具有操作權(quán)限而第二進(jìn)程63具有操作權(quán)限的操作指令。
[0147]在本實(shí)施例的一個(gè)優(yōu)選實(shí)施方式中,第一進(jìn)程61為具有普通權(quán)限的進(jìn)程,第二進(jìn)程63為具有系統(tǒng)權(quán)限的進(jìn)程。
[0148]具體地,功能部件62包括:
[0149]服務(wù)啟動(dòng)子單元621,用于在第一進(jìn)程61需要處理所述代理操作指令時(shí),啟動(dòng)第二進(jìn)程63的服務(wù)部件64。
[0150]服務(wù)關(guān)閉子單元622,用于在所有的代理操作指令執(zhí)行完成后關(guān)閉所述第二進(jìn)程63的服務(wù)部件64。
[0151]指令獲取子單元623,用于獲取代理操作指令。
[0152]消息生成子單元624,用于基于所述代理操作指令生成進(jìn)程間通信消息。
[0153]消息發(fā)送子單元625,用于向服務(wù)部件64發(fā)送所述進(jìn)程間通信消息。
[0154]同時(shí),服務(wù)部件64包括:
[0155]解析子單元641,用于解析接收到的進(jìn)程間通信消息獲得所述代理操作指令;
[0156]執(zhí)行子單元642,用于執(zhí)行所述代理操作指令。
[0157]反饋消息生成子單元643,用于根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息。
[0158]反饋?zhàn)訂卧?44,用于向所述第一進(jìn)程61的功能部件62發(fā)送所述進(jìn)程間反饋消
肩、O
[0159]本實(shí)施例通過(guò)在具有較高權(quán)限的第二進(jìn)程中設(shè)置服務(wù)部件,通過(guò)具有較低權(quán)限的第一進(jìn)程中的功能部件將超出其權(quán)限的操作指令通過(guò)進(jìn)程間通信接口發(fā)送到具有較高權(quán)限的第二進(jìn)程,由第二進(jìn)程來(lái)執(zhí)行所述操作指令后將結(jié)果返回給第一進(jìn)程,從而使得具有較低權(quán)限的第一進(jìn)程可以執(zhí)行只有較高權(quán)限進(jìn)程才能執(zhí)行的操作,使得第一進(jìn)程可以同時(shí)具有執(zhí)行較低權(quán)限操作和較高權(quán)限操作的能力。通過(guò)利用本發(fā)明,不但避免了操作系統(tǒng)原有的將較低權(quán)限進(jìn)程改變?yōu)檩^高權(quán)限進(jìn)程的苛刻步驟,還能解決部分較低權(quán)限操作和較高權(quán)限操作不能同時(shí)執(zhí)行的問(wèn)題,對(duì)于應(yīng)用程序功能設(shè)計(jì)、開(kāi)發(fā)解決了局限性限制。
[0160]顯然,本領(lǐng)域技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,他們可以用計(jì)算機(jī)裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結(jié)合。
[0161]以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域技術(shù)人員而言,本發(fā)明可以有各種改動(dòng)和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種執(zhí)行操作指令的方法,包括: 預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令; 所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一進(jìn)程為具有普通權(quán)限的進(jìn)程,所述第二進(jìn)程為具有系統(tǒng)權(quán)限的進(jìn)程。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 所述第一進(jìn)程的功能部件在第一進(jìn)程需要處理所述代理操作指令時(shí),啟動(dòng)第二進(jìn)程的服務(wù)部件;以及在所有的代理操作指令執(zhí)行完成后,所述第一進(jìn)程的功能部件關(guān)閉第二進(jìn)程的服務(wù)部件。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)置在第一進(jìn)程中的功能部件通過(guò)進(jìn)程間通信接口向第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令包括: 所述功能部件獲取代理操作指令; 所述功能部件基于所述代理操作指令生成進(jìn)程間通信消息; 所述功能部件向所述服務(wù)部件發(fā)送所述進(jìn)程間通信消息。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第二進(jìn)程的服務(wù)部件接收并執(zhí)行所述代理操作指令包括: 解析接收到的進(jìn)程間通信消息獲得所述代理操作指令; 執(zhí)行所述代理操作指令。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第二進(jìn)程的服務(wù)部件通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件包括: 根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息; 向所述第一進(jìn)程的功能部件發(fā)送所述進(jìn)程間反饋消息。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述進(jìn)程間通信接口為套接字接口(Socket); 所述代理操作指令通過(guò)Socket請(qǐng)求消息發(fā)送; 所述執(zhí)行結(jié)果通過(guò)Socket響應(yīng)消息發(fā)送。
8.根據(jù)權(quán)利要求1-7任一項(xiàng)所述的方法,其特征在于,所述服務(wù)部件創(chuàng)建監(jiān)聽(tīng)工作線程,通過(guò)所述監(jiān)聽(tīng)工作線程與所述功能部件建立通信連接; 所述服務(wù)部件在與所述功能部件建立通信連接后,創(chuàng)建通信工作線程與所述功能部件通信。
9.一種執(zhí)行操作指令的裝置,包括預(yù)置在第一進(jìn)程中的功能部件和預(yù)置在第二進(jìn)程的服務(wù)部件; 所述功能部件用于通過(guò)進(jìn)程間通信接口向預(yù)置在第二進(jìn)程的服務(wù)部件發(fā)送代理操作指令; 所述服務(wù)部件用于接收并執(zhí)行所述代理操作指令,并通過(guò)所述進(jìn)程間通信接口將執(zhí)行結(jié)果反饋給第一進(jìn)程的功能部件。
10.根據(jù)權(quán)利要求9所述的執(zhí)行操作指令的裝置,其特征在于,所述第一進(jìn)程為具有普通權(quán)限的進(jìn)程,所述第二進(jìn)程為具有系統(tǒng)權(quán)限的進(jìn)程。
11.根據(jù)權(quán)利要求9所述的執(zhí)行操作指令的裝置,其特征在于,所述功能部件還包括: 服務(wù)啟動(dòng)子單元,用于在第一進(jìn)程需要處理所述代理操作指令時(shí),啟動(dòng)第二進(jìn)程的服務(wù)部件; 服務(wù)關(guān)閉子單元,用于在所有的代理操作指令執(zhí)行完成后關(guān)閉所述第二進(jìn)程的服務(wù)部件。
12.根據(jù)權(quán)利要求9所述的執(zhí)行操作指令的裝置,其特征在于,所述功能部件還包括: 指令獲取子單元,用于獲取代理操作指令; 消息生成子單元,用于基于所述代理操作指令生成進(jìn)程間通信消息; 消息發(fā)送子單元,用于向所述服務(wù)部件發(fā)送所述進(jìn)程間通信消息。
13.根據(jù)權(quán)利要求12所述的執(zhí)行操作指令的裝置,其特征在于,所述服務(wù)部件包括: 解析子單元,用于解析接收到的進(jìn)程間通信消息獲得所述代理操作指令; 執(zhí)行子單元,用于執(zhí)行所述代理操作指令。
14.根據(jù)權(quán)利要求12所述的執(zhí)行操作指令的裝置,其特征在于,所述服務(wù)部件包括: 反饋消息生成子單元 ,用于根據(jù)所述執(zhí)行結(jié)果生成進(jìn)程間反饋消息; 反饋?zhàn)訂卧糜谙蛩龅谝贿M(jìn)程的功能部件發(fā)送所述進(jìn)程間反饋消息。
【文檔編號(hào)】G06F9/48GK103970601SQ201310047482
【公開(kāi)日】2014年8月6日 申請(qǐng)日期:2013年2月6日 優(yōu)先權(quán)日:2013年2月6日
【發(fā)明者】張明生, 周佳, 杜國(guó)楹 申請(qǐng)人:北京壹人壹本信息科技有限公司