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

Linux系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置制造方法

文檔序號(hào):6516859閱讀:181來(lái)源:國(guó)知局
Linux系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置制造方法
【專利摘要】本發(fā)明提供了一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法包括:所述shell進(jìn)程預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件;所述shell進(jìn)程獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;所述shell進(jìn)程判斷所述命令字符串是否為所述shell進(jìn)程命令;若是,則所述shell進(jìn)程解析并執(zhí)行所述命令字符串;若否,則所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。本發(fā)明可以在不影響應(yīng)用進(jìn)程正常運(yùn)行的情況下隨時(shí)查看應(yīng)用進(jìn)程的執(zhí)行情況。
【專利說(shuō)明】LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及LINUX【技術(shù)領(lǐng)域】,特別是涉及一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置。
【背景技術(shù)】
[0002]在具體實(shí)現(xiàn)中,用戶可以通過(guò)以下三種方式獲得應(yīng)用進(jìn)程的執(zhí)行情況。
[0003]I)⑶B調(diào)試查看運(yùn)行狀態(tài)
[0004]⑶B是GNU開源組織發(fā)布的一個(gè)強(qiáng)大的UNIX系統(tǒng)下的應(yīng)用進(jìn)程調(diào)試工具,也是LINUX系統(tǒng)默認(rèn)的調(diào)試器,可以應(yīng)用于調(diào)試嵌入式實(shí)時(shí)系統(tǒng)。GDB有兩種方法可以調(diào)試跟蹤正在運(yùn)行的應(yīng)用進(jìn)程:一種是在LINUX下用ps命令查看正在運(yùn)行應(yīng)用進(jìn)程的其進(jìn)程的標(biāo)識(shí)PID,再用⑶B PID格式掛接正在運(yùn)行的應(yīng)用進(jìn)程;一種是先用⑶B關(guān)聯(lián)上源代碼,再用⑶B進(jìn)行調(diào)試,在GDB中用attach命令來(lái)掛接進(jìn)程的PID。并用detach命令來(lái)取消掛接的進(jìn)程。
[0005]2)應(yīng)用進(jìn)程定時(shí)主動(dòng)上報(bào)執(zhí)行狀態(tài)
[0006]在應(yīng)用進(jìn)程設(shè)計(jì)時(shí),增加定時(shí)上報(bào)功能,將應(yīng)用進(jìn)程執(zhí)行狀態(tài)的關(guān)鍵信息定時(shí)輸出。上報(bào)接收端接收來(lái)自下游終端的定時(shí)任務(wù)信息,并將該任務(wù)信息以文本的形式進(jìn)行存儲(chǔ),同時(shí)將該定時(shí)任務(wù)加入到定時(shí)任務(wù)隊(duì)列中去,并在指定的時(shí)間內(nèi)執(zhí)行相應(yīng)的定時(shí)任務(wù),在執(zhí)行后將結(jié)果寫入對(duì)應(yīng)文件,以備后續(xù)用戶查詢。
[0007]3)遠(yuǎn)端模擬shell執(zhí)行,將執(zhí)行結(jié)果返回至終端
[0008]遠(yuǎn)端模擬shell是一種類似于應(yīng)用Telnet協(xié)議的文本方式交互的調(diào)試手段。在遠(yuǎn)端計(jì)算機(jī)上通過(guò)客戶終端應(yīng)用進(jìn)程將包含命令信息的文本文件內(nèi)容發(fā)送至目標(biāo)執(zhí)行終端,目標(biāo)執(zhí)行終端將其轉(zhuǎn)換為函數(shù)調(diào)用,執(zhí)行完后將結(jié)果以字符串的方式再返回給客戶終端。該方案要求中間的節(jié)點(diǎn)通信必須暢通,如有通信異常則無(wú)法獲取到信息。
[0009]然而,上述的三種獲得應(yīng)用進(jìn)程的執(zhí)行情況的方式存在以下缺陷:
[0010]I)⑶B調(diào)試查看運(yùn)行狀態(tài)會(huì)打斷應(yīng)用進(jìn)程的正常執(zhí)行
[0011 ] ⑶B調(diào)試應(yīng)用進(jìn)程中,必須暫停應(yīng)用進(jìn)程的運(yùn)行。雖然⑶B可以方便地暫停應(yīng)用進(jìn)程的運(yùn)行,以便于查看應(yīng)用進(jìn)程運(yùn)行時(shí)的變量,以及應(yīng)用進(jìn)程運(yùn)行時(shí)的流程,但是這種打斷應(yīng)用進(jìn)程運(yùn)行進(jìn)行定位的方法,不能適用于要求應(yīng)用進(jìn)程持續(xù)運(yùn)行的應(yīng)用場(chǎng)景。
[0012]2)應(yīng)用進(jìn)程定時(shí)主動(dòng)上報(bào)執(zhí)行狀態(tài)不能滿足實(shí)時(shí)性需求
[0013]應(yīng)用進(jìn)程定時(shí)主動(dòng)上報(bào)執(zhí)行狀態(tài)需耗費(fèi)一定的系統(tǒng)資源,在系統(tǒng)資源有限的情況下有可能造成資源的浪費(fèi),不能將有限的資源用于業(yè)務(wù)中,甚至在系統(tǒng)負(fù)荷較大的情況下影響到正常的業(yè)務(wù)。此外,定時(shí)上報(bào)的資源不一定能夠滿足定位問(wèn)題的需求,或者在偶爾的情況下不一定能夠及時(shí)上報(bào)異常,造成有用信息的遺漏以增加定位和解決問(wèn)題的周期。
[0014]3)遠(yuǎn)端模擬shell依賴于外部通信
[0015]遠(yuǎn)端模擬shell通過(guò)通信將shell命令下發(fā)至所需的終端,要求各個(gè)中間節(jié)點(diǎn)通信完全正常,在通信不通的情況下該方法無(wú)效。此外,需用戶注冊(cè)指定的shell命令才能夠使用,且注冊(cè)命令個(gè)數(shù)有限制,在緊急情況下如果沒(méi)有注冊(cè)需要執(zhí)行的命令則無(wú)能為力。
[0016]因此,本領(lǐng)域技術(shù)人員迫切需要解決的問(wèn)題之一在于,提出一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置,可以在不影響應(yīng)用進(jìn)程正常運(yùn)行的情況下隨時(shí)查看應(yīng)用進(jìn)程的執(zhí)行情況。

【發(fā)明內(nèi)容】

[0017]本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置,用以在不影響應(yīng)用進(jìn)程正常運(yùn)行的情況下隨時(shí)查看應(yīng)用進(jìn)程的執(zhí)行情況。
[0018]為了解決上述問(wèn)題,本發(fā)明公開了一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法包括:
[0019]所述shell進(jìn)程預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件;
[0020]所述shell進(jìn)程獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;
[0021]所述shell進(jìn)程判斷所述命令字符串是否為所述shell進(jìn)程命令;
[0022]若是,則所述shell進(jìn)程解析并執(zhí)行所述命令字符串;
[0023]若否,則所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
[0024]優(yōu)選地,在所述Shell進(jìn)程捕獲所述LINUX系統(tǒng)的串口輸入的命令字符串的步驟之前,還包括:
[0025]所述shell進(jìn)程讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí);
[0026]所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的Shell模塊的步驟包括:
[0027]所述shell進(jìn)程依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí);
[0028]所述shell進(jìn)程發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
[0029]優(yōu)選地,所述shell進(jìn)程命令包括shell進(jìn)程退出命令及shell進(jìn)程切換命令。
[0030]本發(fā)明實(shí)施例還公開了一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法包括:
[0031]所述shell模塊初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí);
[0032]當(dāng)所述shell模塊掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件;所述shell模塊解析并執(zhí)行所述命令字符串。
[0033]優(yōu)選地,所述應(yīng)用進(jìn)程具有進(jìn)程標(biāo)識(shí),在所述shell模塊掃描到命令標(biāo)識(shí)的步驟之前,還包括:
[0034]所述shell模塊將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件;[0035]所述she 11模塊初始化申請(qǐng)內(nèi)存;
[0036]所述shell模塊讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
[0037]優(yōu)選地,所述MAP命令文件中包括命令名及對(duì)應(yīng)的函數(shù)地址;所述命令字符串中包括命令名及其對(duì)應(yīng)的參數(shù);所述shell模塊解析并執(zhí)行所述命令字符串的步驟包括:
[0038]所述shell模塊依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址;
[0039]所述shell模塊調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
[0040]優(yōu)選地,在所述shell模塊解析并執(zhí)行所述命令字符串的步驟之后,還包括:
[0041]所述shell模塊清空所述命令標(biāo)識(shí)。
[0042]本發(fā)明實(shí)施例還公開了一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的裝置包括:
[0043]位于shell進(jìn)程的預(yù)置模塊,用于預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件;
[0044]位于shell進(jìn)程的獲取模塊,用于獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;
[0045]位于shell進(jìn)程的判斷模塊,用于判斷所述命令字符串是否為所述shell進(jìn)程命令;若是,則調(diào)用位于shell進(jìn)程的執(zhí)行模塊,若否,則調(diào)用位于shell進(jìn)程的發(fā)送模塊;
[0046]位于shell進(jìn)程的執(zhí)行模塊,用于解析并執(zhí)行所述命令字符串;
[0047]位于shell進(jìn)程的發(fā)送模塊,用于將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
[0048]優(yōu)選地,所述的裝置還包括:
[0049]位于shell進(jìn)程的讀取模塊,用于讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí);
[0050]所述位于shell進(jìn)程的發(fā)送模塊包括:
[0051]位于shell進(jìn)程的進(jìn)程標(biāo)識(shí)獲取子模塊,用于依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí);
[0052]位于shell進(jìn)程的信號(hào)發(fā)送子模塊,用于發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
[0053]本發(fā)明實(shí)施例還公開了一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的裝置包括:
[0054]位于shell模塊的初始化模塊,用于初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí);
[0055]位于shell模塊的掃描模塊,用于在掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件;[0056]位于shell模塊的執(zhí)行模塊,用于解析并執(zhí)行所述命令字符串。
[0057]優(yōu)選地,所述應(yīng)用進(jìn)程具有進(jìn)程標(biāo)識(shí),所述的裝置還包括:
[0058]位于shell模塊的記錄模塊,用于將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件;
[0059]位于she 11模塊的內(nèi)存申請(qǐng)模塊,用于初始化申請(qǐng)內(nèi)存;
[0060]位于shell模塊的讀取模塊,用于讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
[0061]優(yōu)選地,所述MAP命令文件中包括命令名及對(duì)應(yīng)的函數(shù)地址;所述位于shell模塊的執(zhí)行模塊包括:
[0062]位于shell模塊的查找子模塊,用于依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址;
[0063]位于shell模塊的調(diào)用子模塊,用于調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
[0064]優(yōu)選地,在解析并執(zhí)行所述命令字符串的步驟之后,還包括:
[0065]位于shell模塊的清空模塊,用于清空所述命令標(biāo)識(shí)。
[0066]與現(xiàn)有技術(shù)相比,本發(fā)明包括以下優(yōu)點(diǎn):
[0067]在本發(fā)明實(shí)施例中,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入可隨時(shí)啟動(dòng)的shell進(jìn)程,用戶可以通過(guò)所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,來(lái)查看應(yīng)用程序的執(zhí)行情況。shell模塊獲取到LINUX系統(tǒng)的串口輸入的命令字符串時(shí),若該命令字符串是要其由本身執(zhí)行的shell進(jìn)程命令,則直接執(zhí)行該命令字符串即可,若該命令字符串是要由應(yīng)用進(jìn)程執(zhí)行非shell進(jìn)程命令,則通知應(yīng)用進(jìn)程中的shell模塊執(zhí)行該命令字符串,在本發(fā)明實(shí)施例中利用shell模塊替代應(yīng)用進(jìn)程執(zhí)行該命令字符串,因此該應(yīng)用進(jìn)程可以正常執(zhí)行而無(wú)需中斷,并且可以及時(shí)將執(zhí)行該命令字符串的結(jié)果返回給終端,這樣在不影響應(yīng)用進(jìn)程正常運(yùn)行的情況下可隨時(shí)查看應(yīng)用進(jìn)程的執(zhí)行情況,尤其適用于要求應(yīng)用進(jìn)程持續(xù)運(yùn)行的應(yīng)用場(chǎng)景。
[0068]本發(fā)明實(shí)施例利用文件和信號(hào)的方式來(lái)查看LINUX應(yīng)用進(jìn)程運(yùn)行的相關(guān)信息。通過(guò)文件和信號(hào)的方式能夠支持對(duì)多個(gè)應(yīng)用進(jìn)程運(yùn)行信息的監(jiān)視,而不需要打斷應(yīng)用進(jìn)程的正常運(yùn)行,實(shí)時(shí)性好。首先,通過(guò)使用共享文件,通過(guò)讀取共享文件和發(fā)送信號(hào)的方式進(jìn)行信息交互,系統(tǒng)資源占用少。其次,可以根據(jù)需要在LINUX的其他通用shell進(jìn)程和在本發(fā)明實(shí)施例引入的shell進(jìn)程間切換,且不需要額外的串口,靈活性高。再次,本發(fā)明實(shí)施例通過(guò)軟件即可實(shí)現(xiàn),處理方式簡(jiǎn)單,可靠性高。
【專利附圖】

【附圖說(shuō)明】
[0069]圖1是本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法實(shí)施例1的步驟流程圖;
[0070]圖2是本發(fā)明的一種shell進(jìn)程的工作的步驟流程圖;
[0071]圖3本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法實(shí)施例2的步驟流程圖;
[0072]圖4是本發(fā)明的一種shell模塊的工作的步驟流程圖;[0073]圖5是本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置實(shí)施例1的結(jié)構(gòu)框圖;
[0074]圖6是本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置實(shí)施例2的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0075]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
[0076]本發(fā)明實(shí)施例的核心構(gòu)思之一在于,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互。shell模塊獲取到LINUX系統(tǒng)的串口輸入的命令字符串時(shí),若該命令字符串是要其由本身執(zhí)行的shell進(jìn)程命令,則直接執(zhí)行該命令字符串即可,若該命令字符串是由應(yīng)用進(jìn)程執(zhí)行非shell進(jìn)程命令,則通知應(yīng)用進(jìn)程中的shell模塊執(zhí)行該命令字符串。
[0077]參照?qǐng)D1,示出了本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法實(shí)施例1的步驟流程圖,可以在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程可以與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法可以包括如下步驟:
[0078]步驟101,所述shell進(jìn)程預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件;
[0079]在本發(fā)明實(shí)施例中,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加一個(gè)線程生成shell模塊,并在整個(gè)多進(jìn)程的LINUX系統(tǒng)中引入一個(gè)可以隨時(shí)啟動(dòng)的shell進(jìn)程。用戶通過(guò)shell進(jìn)程與應(yīng)用進(jìn)程中shell模塊之間的交互,即可隨時(shí)掌握應(yīng)用進(jìn)程的執(zhí)行情況。
[0080]需初始化shell進(jìn)程命令,注冊(cè)由該shell進(jìn)程本身執(zhí)行的命令,并創(chuàng)建命令共享文件來(lái)向應(yīng)用進(jìn)程傳遞LINUX系統(tǒng)的命令。
[0081]具體而言,所述shell進(jìn)程命令可以包括shell進(jìn)程退出命令及shell進(jìn)程切換命令。其中,shell進(jìn)程切換命令可以使該shell進(jìn)程可以在多個(gè)應(yīng)用進(jìn)程間切換,shell進(jìn)程退出命令則可以結(jié)束該shell進(jìn)程。
[0082]步驟102,所述shell進(jìn)程獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;
[0083]在本發(fā)明實(shí)施例中利用引入的shell進(jìn)程來(lái)負(fù)責(zé)獲取LINUX系統(tǒng)串口輸入,即當(dāng)LINUX系統(tǒng)的串口有命令字符串輸入時(shí),shell進(jìn)程捕獲該命令字符串。
[0084]步驟103,所述shell進(jìn)程判斷所述命令字符串是否為所述shell進(jìn)程命令;若是,則執(zhí)行步驟104,若否,則執(zhí)行步驟105 ;
[0085]步驟104,所述shell進(jìn)程解析并執(zhí)行所述命令字符串;
[0086]步驟105,所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
[0087]當(dāng)shell進(jìn)程獲取到命令字符串時(shí),若該命令字符串是shell進(jìn)程命令,則由shell進(jìn)程解析并執(zhí)行所述命令字符串;若該命令字符串不是shell進(jìn)程命令,則將該命令字符串寫入命令共享文件,并發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程的shell模塊中,shell模塊收到信號(hào)后,從命令共享文件中獲取該命令字符串,并執(zhí)行該命令字符串相應(yīng)的命令。
[0088]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述shell進(jìn)程讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中可以存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí);
[0089]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述步驟105可以包括:
[0090]子步驟S11,所述shell進(jìn)程依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí);
[0091]子步驟S12,所述shell進(jìn)程發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
[0092]在本發(fā)明實(shí)施例中,每個(gè)應(yīng)用進(jìn)程初始化時(shí)都按照設(shè)計(jì)規(guī)劃把自身的進(jìn)程標(biāo)識(shí)(進(jìn)程ID)寫入進(jìn)程號(hào)共享文件中的特定位置。shell進(jìn)程讀取進(jìn)程號(hào)共享文件并更新應(yīng)用進(jìn)程與shell進(jìn)程對(duì)應(yīng)關(guān)系,以保證進(jìn)程重啟后的shell進(jìn)程仍能正確定位到該應(yīng)用進(jìn)程。具體地,若該命令字符串不是shell進(jìn)程命令,那么shell進(jìn)程依據(jù)該命令字符串從進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí),并發(fā)送信號(hào)至該進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程中的shell模塊。
[0093]為了是本領(lǐng)域技術(shù)人員進(jìn)一步了解本發(fā)明實(shí)施例,以下通過(guò)一個(gè)具體示例來(lái)說(shuō)明本發(fā)明引入的shell進(jìn)程的工作流程。
[0094]參照?qǐng)D2所示的本發(fā)明的一種shell進(jìn)程的工作的步驟流程圖,具體步驟如下所示:
[0095]Al)初始化shell進(jìn)程本身的命令;
[0096]BI)初始化創(chuàng)建shell命令共享文件(共享文件2),用于向應(yīng)用進(jìn)程傳遞LINUX系統(tǒng)的命令;
[0097]Cl)初始化讀取進(jìn)程號(hào)文件(共享文件I ),存儲(chǔ)進(jìn)程與shell對(duì)應(yīng)關(guān)系;
[0098]Dl)讀取LINUX系統(tǒng)串口的輸入的命令字符串;
[0099]El)判斷是否為shell進(jìn)程自身命令,即判斷是否為shell進(jìn)程退出命令、shell進(jìn)程切換命令等;若是,則執(zhí)行步驟Fl ;若否,則執(zhí)行步驟Gl ;
[0100]Fl)判斷是否為shell進(jìn)程退出命令;若是,則執(zhí)行步驟II,若否,則執(zhí)行步驟Gl ;
[0101]Gl)執(zhí)行該命令字符串,并返回步驟Cl ;
[0102]Hl)對(duì)于不是shell進(jìn)程本身的命令,將該命令字符串寫入共享文件2,;(指定應(yīng)用進(jìn)程收到信號(hào)后,讀取共享文件2,并執(zhí)行相應(yīng)的命令);
[0103]II)發(fā)信號(hào)通知相應(yīng)的應(yīng)用進(jìn)程;
[0104]Jl)結(jié)束循環(huán)。
[0105]在本發(fā)明實(shí)施例中,若從LINUX系統(tǒng)的串口有命令字符串的命令字符串需要由應(yīng)用進(jìn)程執(zhí)行,那么可以讓應(yīng)用進(jìn)程的shell模塊替代應(yīng)用進(jìn)程來(lái)執(zhí)行,因此該應(yīng)用進(jìn)程可以正常執(zhí)行而無(wú)需中斷,并且可以及時(shí)將執(zhí)行該命令字符串的結(jié)果返回給終端,這樣在不影響應(yīng)用進(jìn)程正常運(yùn)行的情況下可隨時(shí)查看應(yīng)用進(jìn)程的執(zhí)行情況,尤其適用于要求應(yīng)用進(jìn)程持續(xù)運(yùn)行的應(yīng)用場(chǎng)景。
[0106]參照?qǐng)D3,示出了本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法實(shí)施例2的步驟流程圖,可以在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程可以與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法可以包括如下步驟:
[0107]步驟201,所述shell模塊初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí);
[0108]應(yīng)用進(jìn)程中的Shell模塊初始化掛接信號(hào)處理函數(shù),當(dāng)shell進(jìn)程捕獲到從LINUX系統(tǒng)的串口輸入的命令字符串時(shí),該掛接信號(hào)處理函數(shù)在接收到shell進(jìn)程發(fā)送的信號(hào)時(shí),設(shè)置為收到的命令標(biāo)識(shí)。該命令標(biāo)識(shí)用于shell模塊判斷是否有命令需要執(zhí)行。
[0109]步驟202,在所述shell模塊掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件;
[0110]shell模塊循環(huán)檢測(cè)該命令標(biāo)識(shí)是否已經(jīng)設(shè)置,當(dāng)掃描到該命令標(biāo)識(shí)時(shí),從命令共享文件中獲取到命令字符串進(jìn)行解析并執(zhí)行。
[0111]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述應(yīng)用進(jìn)程可以具有進(jìn)程標(biāo)識(shí),在所述shell模塊掃描到命令標(biāo)識(shí)的步驟之前,還可以包括:
[0112]步驟SI,所述shell模塊將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件;
[0113]步驟S2,所述shell模塊初始化申請(qǐng)內(nèi)存;
[0114]步驟S3,所述shell模塊讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
[0115]在本發(fā)明實(shí)施例中,初始化記錄本應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí)(進(jìn)程ID)到命令共享文件,shell進(jìn)程可根據(jù)該進(jìn)程ID發(fā)送信號(hào)通知進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程。
[0116]初始化申請(qǐng)內(nèi)存,并讀取應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件。從該MAP命令文件中獲取到各個(gè)函數(shù)名以及對(duì)應(yīng)地址,保存在申請(qǐng)內(nèi)存中。
[0117]步驟203,所述shell模塊解析并執(zhí)行所述命令字符串。
[0118]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述MAP命令文件中可以包括命令名及對(duì)應(yīng)的函數(shù)地址;所述命令字符串中包括命令名及其對(duì)應(yīng)的參數(shù);所述步驟203可以包括:
[0119]所述shell模塊依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址;
[0120]所述shell模塊調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
[0121]當(dāng)shell模塊接收到命令字符串時(shí),對(duì)命令名以及參數(shù)進(jìn)行解析。具體而言,讀取命令字符串后,以空格為分節(jié)符,得到命令名以及對(duì)應(yīng)的參數(shù)。Shell模塊查找命令名對(duì)應(yīng)的函數(shù)名,確定對(duì)應(yīng)的函數(shù)地址,最終通過(guò)地址調(diào)用執(zhí)行命令。
[0122]在本發(fā)明的一種優(yōu)選實(shí)施例中,在所述步驟203,即所述shell模塊解析并執(zhí)行所述命令字符串的步驟之后,還可以包括:
[0123]所述shell模塊清空所述命令標(biāo)識(shí)。
[0124]當(dāng)shell模塊解析并執(zhí)行所述命令字符串后,可以將清空所設(shè)置的命令標(biāo)識(shí),用以下一次接收到shell進(jìn)程發(fā)送的信號(hào)時(shí),再次設(shè)置命令標(biāo)識(shí)。
[0125]需要說(shuō)明的是,shell模塊可以用應(yīng)用進(jìn)程中的主線程替代,可以直接使用應(yīng)用進(jìn)程中的主線程來(lái)實(shí)現(xiàn)shell模塊,本發(fā)明實(shí)施例對(duì)此不作限制。
[0126]為了使本領(lǐng)域技術(shù)人員進(jìn)一步了解本發(fā)明實(shí)施例,以下通過(guò)一個(gè)具體的示例來(lái)說(shuō)明本發(fā)明shell模塊的工作流程。
[0127]參照?qǐng)D4所示的本發(fā)明的一種shell模塊的工作的步驟流程圖,具體可以包括如下步驟:
[0128]A2)初始化掛接信號(hào)處理函數(shù),掛接信號(hào)處理函數(shù)中設(shè)置收到shell進(jìn)程發(fā)送的信號(hào)時(shí)設(shè)置命令標(biāo)識(shí);
[0129]B2)初始化記錄本應(yīng)用進(jìn)程的進(jìn)程ID到進(jìn)程號(hào)共享文件(共享文件1),shell進(jìn)程根據(jù)該進(jìn)程ID將命令發(fā)送給相應(yīng)進(jìn)程;
[0130]C2)初始化申請(qǐng)內(nèi)存,并讀取應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,從該文件中獲取到各個(gè)函數(shù)名以及對(duì)應(yīng)地址,保存在申請(qǐng)的內(nèi)存中。以便于在接收到命令字符串時(shí)查找命令對(duì)應(yīng)的函數(shù)名,確定對(duì)應(yīng)的地址,最終通過(guò)地址調(diào)用執(zhí)行命令;
[0131]D2)掃描是否收到命令標(biāo)識(shí);若是,則執(zhí)行步驟E2,若否,則執(zhí)行步驟G2 ;
[0132]E2)讀取命令共享文件(共享文件2),獲取命令字符串進(jìn)行解析并執(zhí)行;
[0133]F2)清空接收命令標(biāo)識(shí);
[0134]G2)延遲以使應(yīng)用進(jìn)程中的其他線程切換shell模塊中的shell線程。
[0135]需要說(shuō)明的是,對(duì)于方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必須的。
[0136]參照?qǐng)D5,示出了本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置實(shí)施例1的結(jié)構(gòu)框圖,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中可以增加線程并生成shell模塊,并且可以在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊可以進(jìn)行交互,所述的裝置可以包括如下模塊:
[0137]位于shell進(jìn)程的預(yù)置模塊301,用于預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件;
[0138]位于shell進(jìn)程的獲取模塊302,用于獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;
[0139]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述的裝置還可以包括:
[0140]位于shell進(jìn)程的讀取模塊,用于讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí);
[0141]位于shell進(jìn)程的判斷模塊303,用于判斷所述命令字符串是否為所述shell進(jìn)程命令;若是,則調(diào)用位于shell進(jìn)程的執(zhí)行模塊304,若否,則調(diào)用位于shell進(jìn)程的發(fā)送模塊 305 ;
[0142]位于shell進(jìn)程的執(zhí)行模塊304,用于解析并執(zhí)行所述命令字符串;
[0143]位于shell進(jìn)程的發(fā)送模塊305,用于將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
[0144]所述位于shell進(jìn)程的發(fā)送模塊305可以包括:
[0145]位于shell進(jìn)程的進(jìn)程標(biāo)識(shí)獲取子模塊,用于依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí);[0146]位于shell進(jìn)程的信號(hào)發(fā)送子模塊,用于發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
[0147]參照?qǐng)D6,示出了本發(fā)明的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置實(shí)施例2的結(jié)構(gòu)框圖,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中可以增加線程并生成shell模塊,并且可以在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊可以進(jìn)行交互,所述的裝置可以包括如下模塊:
[0148]位于shell模塊的初始化模塊401,用于初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí);
[0149]位于shell模塊的掃描模塊402,用于在掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件;
[0150]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述應(yīng)用進(jìn)程可以具有進(jìn)程標(biāo)識(shí),所述的裝置還可以包括:
[0151]位于shell模塊的記錄模塊,用于將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件;
[0152]位于she 11模塊的內(nèi)存申請(qǐng)模塊,用于初始化申請(qǐng)內(nèi)存;
[0153]位于shell模塊的讀取模塊,用于讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
[0154]位于shell模塊的執(zhí)行模塊403,用于解析并執(zhí)行所述命令字符串。
[0155]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述MAP命令文件中包括命令名及對(duì)應(yīng)的函數(shù)地址;所述位于shell模塊的執(zhí)行模塊403可以包括:
[0156]位于shell模塊的查找子模塊,用于依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址;
[0157]位于shell模塊的調(diào)用子模塊,用于調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
[0158]在本發(fā)明的一種優(yōu)選實(shí)施例中,所述的裝置還可以包括:
[0159]位于shell模塊的清空模塊,用于清空所述命令標(biāo)識(shí)。
[0160]對(duì)于裝置實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。
[0161]本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。
[0162]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
[0163]本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
[0164]這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
[0165]這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
[0166]盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例做出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。
[0167]最后,還需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0168]以上對(duì)本發(fā)明所提供的一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法及裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法,其特征在于,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法包括: 所述shell進(jìn)程預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件; 所述shell進(jìn)程獲取所述LINUX系統(tǒng)的串口輸入的命令字符串; 所述shell進(jìn)程判斷所述命令字符串是否為所述shell進(jìn)程命令; 若是,則所述shell進(jìn)程解析并執(zhí)行所述命令字符串; 若否,則所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述Shell進(jìn)程捕獲所述LINUX系統(tǒng)的串口輸入的命令字符串的步驟之前,還包括: 所述shell進(jìn)程讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí); 所述shell進(jìn)程將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的Shell模塊的步驟包括: 所述shell進(jìn)程依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí); 所述shell進(jìn)程發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述shell進(jìn)程命令包括shell進(jìn)程退出命令及shell進(jìn)程切換命令。
4.一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的方法,其特征在于,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的方法包括: 所述shell模塊初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí); 當(dāng)所述shell模塊掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件;所述shell模塊解析并執(zhí)行所述命令字符串。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述應(yīng)用進(jìn)程具有進(jìn)程標(biāo)識(shí),在所述shell模塊掃描到命令標(biāo)識(shí)的步驟之前,還包括: 所述shell模塊將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件; 所述shell模塊初始化申請(qǐng)內(nèi)存; 所述shell模塊讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述MAP命令文件中包括命令名及對(duì)應(yīng)的函數(shù)地址;所述命令字符串中包括命令名及其對(duì)應(yīng)的參數(shù);所述shell模塊解析并執(zhí)行所述命令字符串的步驟包括: 所述shell模塊依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址;所述shell模塊調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,在所述shell模塊解析并執(zhí)行所述命令字符串的步驟之后,還包括: 所述shell模塊清空所述命令標(biāo)識(shí)。
8.一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置,其特征在于,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的裝置包括: 位于shell進(jìn)程的預(yù)置模塊,用于預(yù)置shell進(jìn)程命令,并創(chuàng)建命令共享文件; 位于shell進(jìn)程的獲取模塊,用于獲取所述LINUX系統(tǒng)的串口輸入的命令字符串;位于shell進(jìn)程的判斷模塊,用于判斷所述命令字符串是否為所述shell進(jìn)程命令;若是,則調(diào)用位于shell進(jìn)程的執(zhí)行模塊,若否,則調(diào)用位于shell進(jìn)程的發(fā)送模塊; 位于shell進(jìn)程的執(zhí)行模塊,用于解析并執(zhí)行所述命令字符串; 位于shell進(jìn)程的發(fā)送模塊,用于將所述命令字符串寫入所述命令共享文件,發(fā)送信號(hào)到指定的應(yīng)用進(jìn)程中的shell模塊中;所述shell模塊用于在接收到所述信號(hào)后從所述命令共享文件獲取并執(zhí)行所述命令字符串。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,還包括: 位于shell進(jìn)程的讀取模塊,用于讀取預(yù)置的進(jìn)程號(hào)共享文件;所述進(jìn)程號(hào)共享文件中存儲(chǔ)有應(yīng)用進(jìn)程的進(jìn)程標(biāo)識(shí);` 所述位于shell進(jìn)程的發(fā)送模塊包括: 位于shell進(jìn)程的進(jìn)程標(biāo)識(shí)獲取子模塊,用于依據(jù)所述命令字符串從所述進(jìn)程號(hào)共享文件中獲取對(duì)應(yīng)的進(jìn)程標(biāo)識(shí); 位于shell進(jìn)程的信號(hào)發(fā)送子模塊,用于發(fā)送信號(hào)至所述進(jìn)程標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用進(jìn)程的shell模塊中。
10.一種LINUX系統(tǒng)中應(yīng)用進(jìn)程命令處理的裝置,其特征在于,在LINUX系統(tǒng)中的應(yīng)用進(jìn)程中增加線程并生成shell模塊,并且在所述LINUX系統(tǒng)中引入shell進(jìn)程,所述shell進(jìn)程與應(yīng)用進(jìn)程中的shell模塊進(jìn)行交互,所述的裝置包括: 位于shell模塊的初始化模塊,用于初始化掛接信號(hào)處理函數(shù),當(dāng)所述shell進(jìn)程從所述LINUX系統(tǒng)的串口輸入的命令字符串時(shí),接收到所述shell進(jìn)程發(fā)送的信號(hào)并設(shè)置命令標(biāo)識(shí); 位于shell模塊的掃描模塊,用于在掃描到所述命令標(biāo)識(shí)時(shí),從命令共享文件獲取命令字符串;所述命令共享文件由所述shell進(jìn)程創(chuàng)建,所述命令字符串由所述shell進(jìn)程獲取到所述命令共享文件; 位于shell模塊的執(zhí)行模塊,用于解析并執(zhí)行所述命令字符串。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述應(yīng)用進(jìn)程具有進(jìn)程標(biāo)識(shí),所述的裝置還包括: 位于shell模塊的記錄模塊,用于將所述進(jìn)程標(biāo)識(shí)記錄到預(yù)置的進(jìn)程號(hào)共享文件; 位于shell模塊的內(nèi)存申請(qǐng)模塊,用于初始化申請(qǐng)內(nèi)存; 位于shell模塊的讀取模塊,用于讀取所述應(yīng)用進(jìn)程編譯時(shí)生成的MAP命令文件,并將所述MAP命令文件存儲(chǔ)于所述申請(qǐng)內(nèi)存中。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述MAP命令文件中包括命令名及對(duì)應(yīng)的函數(shù)地址;所述位于shell模塊的執(zhí)行模塊包括: 位于shell模塊的查找子模塊,用于依據(jù)命令名在所述MAP命令文件中查找到所述命令名對(duì)應(yīng)的函數(shù)地址; 位于shell模塊的調(diào)用子模塊,用于調(diào)用所述函數(shù)地址中的函數(shù),并依據(jù)所述參數(shù)執(zhí)行所述函數(shù)。
13.根據(jù)權(quán)利要求10所述的裝置,其特征在于,在解析并執(zhí)行所述命令字符串的步驟之后,還包括: 位于shell模塊的清空模塊,用于`清空所述命令標(biāo)識(shí)。
【文檔編號(hào)】G06F9/48GK103593239SQ201310518044
【公開日】2014年2月19日 申請(qǐng)日期:2013年10月28日 優(yōu)先權(quán)日:2013年10月28日
【發(fā)明者】王麗娜, 蔡蕾 申請(qǐng)人:大唐移動(dòng)通信設(shè)備有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
田东县| 灵川县| 霞浦县| 英吉沙县| 安溪县| 金湖县| 长治市| 九寨沟县| 腾冲县| 绥棱县| 高密市| 湟中县| 象山县| 大余县| 三穗县| 高雄县| 西乌珠穆沁旗| 昆山市| 扶余县| 旅游| 城固县| 汉中市| 通江县| 潢川县| 吉木乃县| 荆门市| 镇安县| 潼关县| 太原市| 茂名市| 石渠县| 安远县| 湖南省| 无棣县| 黔西县| 武冈市| 和龙市| 北碚区| 张家港市| 北川| 香格里拉县|