CN103593239A - Linux系统中应用进程命令处理的方法及装置 - Google Patents
Linux系统中应用进程命令处理的方法及装置 Download PDFInfo
- Publication number
- CN103593239A CN103593239A CN201310518044.9A CN201310518044A CN103593239A CN 103593239 A CN103593239 A CN 103593239A CN 201310518044 A CN201310518044 A CN 201310518044A CN 103593239 A CN103593239 A CN 103593239A
- Authority
- CN
- China
- Prior art keywords
- shell
- module
- command
- application
- shared file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种LINUX系统中应用进程命令处理的方法及装置,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的方法包括:所述shell进程预置shell进程命令,并创建命令共享文件;所述shell进程获取所述LINUX系统的串口输入的命令字符串;所述shell进程判断所述命令字符串是否为所述shell进程命令;若是,则所述shell进程解析并执行所述命令字符串;若否,则所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。本发明可以在不影响应用进程正常运行的情况下随时查看应用进程的执行情况。
Description
技术领域
本发明涉及LINUX技术领域,特别是涉及一种LINUX系统中应用进程命令处理的方法及装置。
背景技术
在具体实现中,用户可以通过以下三种方式获得应用进程的执行情况。
1)GDB调试查看运行状态
GDB是GNU开源组织发布的一个强大的UNIX系统下的应用进程调试工具,也是LINUX系统默认的调试器,可以应用于调试嵌入式实时系统。GDB有两种方法可以调试跟踪正在运行的应用进程:一种是在LINUX下用ps命令查看正在运行应用进程的其进程的标识PID,再用GDB PID格式挂接正在运行的应用进程;一种是先用GDB关联上源代码,再用GDB进行调试,在GDB中用attach命令来挂接进程的PID。并用detach命令来取消挂接的进程。
2)应用进程定时主动上报执行状态
在应用进程设计时,增加定时上报功能,将应用进程执行状态的关键信息定时输出。上报接收端接收来自下游终端的定时任务信息,并将该任务信息以文本的形式进行存储,同时将该定时任务加入到定时任务队列中去,并在指定的时间内执行相应的定时任务,在执行后将结果写入对应文件,以备后续用户查询。
3)远端模拟shell执行,将执行结果返回至终端
远端模拟shell是一种类似于应用Telnet协议的文本方式交互的调试手段。在远端计算机上通过客户终端应用进程将包含命令信息的文本文件内容发送至目标执行终端,目标执行终端将其转换为函数调用,执行完后将结果以字符串的方式再返回给客户终端。该方案要求中间的节点通信必须畅通,如有通信异常则无法获取到信息。
然而,上述的三种获得应用进程的执行情况的方式存在以下缺陷:
1)GDB调试查看运行状态会打断应用进程的正常执行
GDB调试应用进程中,必须暂停应用进程的运行。虽然GDB可以方便地暂停应用进程的运行,以便于查看应用进程运行时的变量,以及应用进程运行时的流程,但是这种打断应用进程运行进行定位的方法,不能适用于要求应用进程持续运行的应用场景。
2)应用进程定时主动上报执行状态不能满足实时性需求
应用进程定时主动上报执行状态需耗费一定的系统资源,在系统资源有限的情况下有可能造成资源的浪费,不能将有限的资源用于业务中,甚至在系统负荷较大的情况下影响到正常的业务。此外,定时上报的资源不一定能够满足定位问题的需求,或者在偶尔的情况下不一定能够及时上报异常,造成有用信息的遗漏以增加定位和解决问题的周期。
3)远端模拟shell依赖于外部通信
远端模拟shell通过通信将shell命令下发至所需的终端,要求各个中间节点通信完全正常,在通信不通的情况下该方法无效。此外,需用户注册指定的shell命令才能够使用,且注册命令个数有限制,在紧急情况下如果没有注册需要执行的命令则无能为力。
因此,本领域技术人员迫切需要解决的问题之一在于,提出一种LINUX系统中应用进程命令处理的方法及装置,可以在不影响应用进程正常运行的情况下随时查看应用进程的执行情况。
发明内容
本发明所要解决的技术问题是提供一种LINUX系统中应用进程命令处理的方法及装置,用以在不影响应用进程正常运行的情况下随时查看应用进程的执行情况。
为了解决上述问题,本发明公开了一种LINUX系统中应用进程命令处理的方法,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的方法包括:
所述shell进程预置shell进程命令,并创建命令共享文件;
所述shell进程获取所述LINUX系统的串口输入的命令字符串;
所述shell进程判断所述命令字符串是否为所述shell进程命令;
若是,则所述shell进程解析并执行所述命令字符串;
若否,则所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
优选地,在所述Shell进程捕获所述LINUX系统的串口输入的命令字符串的步骤之前,还包括:
所述shell进程读取预置的进程号共享文件;所述进程号共享文件中存储有应用进程的进程标识;
所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的Shell模块的步骤包括:
所述shell进程依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
所述shell进程发送信号至所述进程标识对应的应用进程的shell模块中。
优选地,所述shell进程命令包括shell进程退出命令及shell进程切换命令。
本发明实施例还公开了一种LINUX系统中应用进程命令处理的方法,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的方法包括:
所述shell模块初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
当所述shell模块扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;所述shell模块解析并执行所述命令字符串。
优选地,所述应用进程具有进程标识,在所述shell模块扫描到命令标识的步骤之前,还包括:
所述shell模块将所述进程标识记录到预置的进程号共享文件;
所述shell模块初始化申请内存;
所述shell模块读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
优选地,所述MAP命令文件中包括命令名及对应的函数地址;所述命令字符串中包括命令名及其对应的参数;所述shell模块解析并执行所述命令字符串的步骤包括:
所述shell模块依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
所述shell模块调用所述函数地址中的函数,并依据所述参数执行所述函数。
优选地,在所述shell模块解析并执行所述命令字符串的步骤之后,还包括:
所述shell模块清空所述命令标识。
本发明实施例还公开了一种LINUX系统中应用进程命令处理的装置,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的装置包括:
位于shell进程的预置模块,用于预置shell进程命令,并创建命令共享文件;
位于shell进程的获取模块,用于获取所述LINUX系统的串口输入的命令字符串;
位于shell进程的判断模块,用于判断所述命令字符串是否为所述shell进程命令;若是,则调用位于shell进程的执行模块,若否,则调用位于shell进程的发送模块;
位于shell进程的执行模块,用于解析并执行所述命令字符串;
位于shell进程的发送模块,用于将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
优选地,所述的装置还包括:
位于shell进程的读取模块,用于读取预置的进程号共享文件;所述进程号共享文件中存储有应用进程的进程标识;
所述位于shell进程的发送模块包括:
位于shell进程的进程标识获取子模块,用于依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
位于shell进程的信号发送子模块,用于发送信号至所述进程标识对应的应用进程的shell模块中。
本发明实施例还公开了一种LINUX系统中应用进程命令处理的装置,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的装置包括:
位于shell模块的初始化模块,用于初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
位于shell模块的扫描模块,用于在扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;
位于shell模块的执行模块,用于解析并执行所述命令字符串。
优选地,所述应用进程具有进程标识,所述的装置还包括:
位于shell模块的记录模块,用于将所述进程标识记录到预置的进程号共享文件;
位于shell模块的内存申请模块,用于初始化申请内存;
位于shell模块的读取模块,用于读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
优选地,所述MAP命令文件中包括命令名及对应的函数地址;所述位于shell模块的执行模块包括:
位于shell模块的查找子模块,用于依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
位于shell模块的调用子模块,用于调用所述函数地址中的函数,并依据所述参数执行所述函数。
优选地,在解析并执行所述命令字符串的步骤之后,还包括:
位于shell模块的清空模块,用于清空所述命令标识。
与现有技术相比,本发明包括以下优点:
在本发明实施例中,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入可随时启动的shell进程,用户可以通过所述shell进程与应用进程中的shell模块进行交互,来查看应用程序的执行情况。shell模块获取到LINUX系统的串口输入的命令字符串时,若该命令字符串是要其由本身执行的shell进程命令,则直接执行该命令字符串即可,若该命令字符串是要由应用进程执行非shell进程命令,则通知应用进程中的shell模块执行该命令字符串,在本发明实施例中利用shell模块替代应用进程执行该命令字符串,因此该应用进程可以正常执行而无需中断,并且可以及时将执行该命令字符串的结果返回给终端,这样在不影响应用进程正常运行的情况下可随时查看应用进程的执行情况,尤其适用于要求应用进程持续运行的应用场景。
本发明实施例利用文件和信号的方式来查看LINUX应用进程运行的相关信息。通过文件和信号的方式能够支持对多个应用进程运行信息的监视,而不需要打断应用进程的正常运行,实时性好。首先,通过使用共享文件,通过读取共享文件和发送信号的方式进行信息交互,系统资源占用少。其次,可以根据需要在LINUX的其他通用shell进程和在本发明实施例引入的shell进程间切换,且不需要额外的串口,灵活性高。再次,本发明实施例通过软件即可实现,处理方式简单,可靠性高。
附图说明
图1是本发明的一种LINUX系统中应用进程命令处理的方法实施例1的步骤流程图;
图2是本发明的一种shell进程的工作的步骤流程图;
图3本发明的一种LINUX系统中应用进程命令处理的方法实施例2的步骤流程图;
图4是本发明的一种shell模块的工作的步骤流程图;
图5是本发明的一种LINUX系统中应用进程命令处理的装置实施例1的结构框图;
图6是本发明的一种LINUX系统中应用进程命令处理的装置实施例2的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互。shell模块获取到LINUX系统的串口输入的命令字符串时,若该命令字符串是要其由本身执行的shell进程命令,则直接执行该命令字符串即可,若该命令字符串是由应用进程执行非shell进程命令,则通知应用进程中的shell模块执行该命令字符串。
参照图1,示出了本发明的一种LINUX系统中应用进程命令处理的方法实施例1的步骤流程图,可以在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程可以与应用进程中的shell模块进行交互,所述的方法可以包括如下步骤:
步骤101,所述shell进程预置shell进程命令,并创建命令共享文件;
在本发明实施例中,在LINUX系统中的应用进程中增加一个线程生成shell模块,并在整个多进程的LINUX系统中引入一个可以随时启动的shell进程。用户通过shell进程与应用进程中shell模块之间的交互,即可随时掌握应用进程的执行情况。
需初始化shell进程命令,注册由该shell进程本身执行的命令,并创建命令共享文件来向应用进程传递LINUX系统的命令。
具体而言,所述shell进程命令可以包括shell进程退出命令及shell进程切换命令。其中,shell进程切换命令可以使该shell进程可以在多个应用进程间切换,shell进程退出命令则可以结束该shell进程。
步骤102,所述shell进程获取所述LINUX系统的串口输入的命令字符串;
在本发明实施例中利用引入的shell进程来负责获取LINUX系统串口输入,即当LINUX系统的串口有命令字符串输入时,shell进程捕获该命令字符串。
步骤103,所述shell进程判断所述命令字符串是否为所述shell进程命令;若是,则执行步骤104,若否,则执行步骤105;
步骤104,所述shell进程解析并执行所述命令字符串;
步骤105,所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
当shell进程获取到命令字符串时,若该命令字符串是shell进程命令,则由shell进程解析并执行所述命令字符串;若该命令字符串不是shell进程命令,则将该命令字符串写入命令共享文件,并发送信号到指定的应用进程的shell模块中,shell模块收到信号后,从命令共享文件中获取该命令字符串,并执行该命令字符串相应的命令。
在本发明的一种优选实施例中,所述shell进程读取预置的进程号共享文件;所述进程号共享文件中可以存储有应用进程的进程标识;
在本发明的一种优选实施例中,所述步骤105可以包括:
子步骤S11,所述shell进程依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
子步骤S12,所述shell进程发送信号至所述进程标识对应的应用进程的shell模块中。
在本发明实施例中,每个应用进程初始化时都按照设计规划把自身的进程标识(进程ID)写入进程号共享文件中的特定位置。shell进程读取进程号共享文件并更新应用进程与shell进程对应关系,以保证进程重启后的shell进程仍能正确定位到该应用进程。具体地,若该命令字符串不是shell进程命令,那么shell进程依据该命令字符串从进程号共享文件中获取对应的进程标识,并发送信号至该进程标识对应的应用进程中的shell模块。
为了是本领域技术人员进一步了解本发明实施例,以下通过一个具体示例来说明本发明引入的shell进程的工作流程。
参照图2所示的本发明的一种shell进程的工作的步骤流程图,具体步骤如下所示:
A1)初始化shell进程本身的命令;
B1)初始化创建shell命令共享文件(共享文件2),用于向应用进程传递LINUX系统的命令;
C1)初始化读取进程号文件(共享文件1),存储进程与shell对应关系;
D1)读取LINUX系统串口的输入的命令字符串;
E1)判断是否为shell进程自身命令,即判断是否为shell进程退出命令、shell进程切换命令等;若是,则执行步骤F1;若否,则执行步骤G1;
F1)判断是否为shell进程退出命令;若是,则执行步骤I1,若否,则执行步骤G1;
G1)执行该命令字符串,并返回步骤C1;
H1)对于不是shell进程本身的命令,将该命令字符串写入共享文件2,;(指定应用进程收到信号后,读取共享文件2,并执行相应的命令);
I1)发信号通知相应的应用进程;
J1)结束循环。
在本发明实施例中,若从LINUX系统的串口有命令字符串的命令字符串需要由应用进程执行,那么可以让应用进程的shell模块替代应用进程来执行,因此该应用进程可以正常执行而无需中断,并且可以及时将执行该命令字符串的结果返回给终端,这样在不影响应用进程正常运行的情况下可随时查看应用进程的执行情况,尤其适用于要求应用进程持续运行的应用场景。
参照图3,示出了本发明的一种LINUX系统中应用进程命令处理的方法实施例2的步骤流程图,可以在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程可以与应用进程中的shell模块进行交互,所述的方法可以包括如下步骤:
步骤201,所述shell模块初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
应用进程中的Shell模块初始化挂接信号处理函数,当shell进程捕获到从LINUX系统的串口输入的命令字符串时,该挂接信号处理函数在接收到shell进程发送的信号时,设置为收到的命令标识。该命令标识用于shell模块判断是否有命令需要执行。
步骤202,在所述shell模块扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;
shell模块循环检测该命令标识是否已经设置,当扫描到该命令标识时,从命令共享文件中获取到命令字符串进行解析并执行。
在本发明的一种优选实施例中,所述应用进程可以具有进程标识,在所述shell模块扫描到命令标识的步骤之前,还可以包括:
步骤S1,所述shell模块将所述进程标识记录到预置的进程号共享文件;
步骤S2,所述shell模块初始化申请内存;
步骤S3,所述shell模块读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
在本发明实施例中,初始化记录本应用进程的进程标识(进程ID)到命令共享文件,shell进程可根据该进程ID发送信号通知进程标识对应的应用进程。
初始化申请内存,并读取应用进程编译时生成的MAP命令文件。从该MAP命令文件中获取到各个函数名以及对应地址,保存在申请内存中。
步骤203,所述shell模块解析并执行所述命令字符串。
在本发明的一种优选实施例中,所述MAP命令文件中可以包括命令名及对应的函数地址;所述命令字符串中包括命令名及其对应的参数;所述步骤203可以包括:
所述shell模块依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
所述shell模块调用所述函数地址中的函数,并依据所述参数执行所述函数。
当shell模块接收到命令字符串时,对命令名以及参数进行解析。具体而言,读取命令字符串后,以空格为分节符,得到命令名以及对应的参数。Shell模块查找命令名对应的函数名,确定对应的函数地址,最终通过地址调用执行命令。
在本发明的一种优选实施例中,在所述步骤203,即所述shell模块解析并执行所述命令字符串的步骤之后,还可以包括:
所述shell模块清空所述命令标识。
当shell模块解析并执行所述命令字符串后,可以将清空所设置的命令标识,用以下一次接收到shell进程发送的信号时,再次设置命令标识。
需要说明的是,shell模块可以用应用进程中的主线程替代,可以直接使用应用进程中的主线程来实现shell模块,本发明实施例对此不作限制。
为了使本领域技术人员进一步了解本发明实施例,以下通过一个具体的示例来说明本发明shell模块的工作流程。
参照图4所示的本发明的一种shell模块的工作的步骤流程图,具体可以包括如下步骤:
A2)初始化挂接信号处理函数,挂接信号处理函数中设置收到shell进程发送的信号时设置命令标识;
B2)初始化记录本应用进程的进程ID到进程号共享文件(共享文件1),shell进程根据该进程ID将命令发送给相应进程;
C2)初始化申请内存,并读取应用进程编译时生成的MAP命令文件,从该文件中获取到各个函数名以及对应地址,保存在申请的内存中。以便于在接收到命令字符串时查找命令对应的函数名,确定对应的地址,最终通过地址调用执行命令;
D2)扫描是否收到命令标识;若是,则执行步骤E2,若否,则执行步骤G2;
E2)读取命令共享文件(共享文件2),获取命令字符串进行解析并执行;
F2)清空接收命令标识;
G2)延迟以使应用进程中的其他线程切换shell模块中的shell线程。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
参照图5,示出了本发明的一种LINUX系统中应用进程命令处理的装置实施例1的结构框图,在LINUX系统中的应用进程中可以增加线程并生成shell模块,并且可以在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块可以进行交互,所述的装置可以包括如下模块:
位于shell进程的预置模块301,用于预置shell进程命令,并创建命令共享文件;
位于shell进程的获取模块302,用于获取所述LINUX系统的串口输入的命令字符串;
在本发明的一种优选实施例中,所述的装置还可以包括:
位于shell进程的读取模块,用于读取预置的进程号共享文件;所述进程号共享文件中存储有应用进程的进程标识;
位于shell进程的判断模块303,用于判断所述命令字符串是否为所述shell进程命令;若是,则调用位于shell进程的执行模块304,若否,则调用位于shell进程的发送模块305;
位于shell进程的执行模块304,用于解析并执行所述命令字符串;
位于shell进程的发送模块305,用于将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
所述位于shell进程的发送模块305可以包括:
位于shell进程的进程标识获取子模块,用于依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
位于shell进程的信号发送子模块,用于发送信号至所述进程标识对应的应用进程的shell模块中。
参照图6,示出了本发明的一种LINUX系统中应用进程命令处理的装置实施例2的结构框图,在LINUX系统中的应用进程中可以增加线程并生成shell模块,并且可以在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块可以进行交互,所述的装置可以包括如下模块:
位于shell模块的初始化模块401,用于初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
位于shell模块的扫描模块402,用于在扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;
在本发明的一种优选实施例中,所述应用进程可以具有进程标识,所述的装置还可以包括:
位于shell模块的记录模块,用于将所述进程标识记录到预置的进程号共享文件;
位于shell模块的内存申请模块,用于初始化申请内存;
位于shell模块的读取模块,用于读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
位于shell模块的执行模块403,用于解析并执行所述命令字符串。
在本发明的一种优选实施例中,所述MAP命令文件中包括命令名及对应的函数地址;所述位于shell模块的执行模块403可以包括:
位于shell模块的查找子模块,用于依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
位于shell模块的调用子模块,用于调用所述函数地址中的函数,并依据所述参数执行所述函数。
在本发明的一种优选实施例中,所述的装置还可以包括:
位于shell模块的清空模块,用于清空所述命令标识。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
最后,还需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种LINUX系统中应用进程命令处理的方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种LINUX系统中应用进程命令处理的方法,其特征在于,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的方法包括:
所述shell进程预置shell进程命令,并创建命令共享文件;
所述shell进程获取所述LINUX系统的串口输入的命令字符串;
所述shell进程判断所述命令字符串是否为所述shell进程命令;
若是,则所述shell进程解析并执行所述命令字符串;
若否,则所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
2.根据权利要求1所述的方法,其特征在于,在所述Shell进程捕获所述LINUX系统的串口输入的命令字符串的步骤之前,还包括:
所述shell进程读取预置的进程号共享文件;所述进程号共享文件中存储有应用进程的进程标识;
所述shell进程将所述命令字符串写入所述命令共享文件,发送信号到指定的Shell模块的步骤包括:
所述shell进程依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
所述shell进程发送信号至所述进程标识对应的应用进程的shell模块中。
3.根据权利要求1所述的方法,其特征在于,所述shell进程命令包括shell进程退出命令及shell进程切换命令。
4.一种LINUX系统中应用进程命令处理的方法,其特征在于,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的方法包括:
所述shell模块初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
当所述shell模块扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;所述shell模块解析并执行所述命令字符串。
5.根据权利要求4所述的方法,其特征在于,所述应用进程具有进程标识,在所述shell模块扫描到命令标识的步骤之前,还包括:
所述shell模块将所述进程标识记录到预置的进程号共享文件;
所述shell模块初始化申请内存;
所述shell模块读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
6.根据权利要求5所述的方法,其特征在于,所述MAP命令文件中包括命令名及对应的函数地址;所述命令字符串中包括命令名及其对应的参数;所述shell模块解析并执行所述命令字符串的步骤包括:
所述shell模块依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
所述shell模块调用所述函数地址中的函数,并依据所述参数执行所述函数。
7.根据权利要求4所述的方法,其特征在于,在所述shell模块解析并执行所述命令字符串的步骤之后,还包括:
所述shell模块清空所述命令标识。
8.一种LINUX系统中应用进程命令处理的装置,其特征在于,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的装置包括:
位于shell进程的预置模块,用于预置shell进程命令,并创建命令共享文件;
位于shell进程的获取模块,用于获取所述LINUX系统的串口输入的命令字符串;
位于shell进程的判断模块,用于判断所述命令字符串是否为所述shell进程命令;若是,则调用位于shell进程的执行模块,若否,则调用位于shell进程的发送模块;
位于shell进程的执行模块,用于解析并执行所述命令字符串;
位于shell进程的发送模块,用于将所述命令字符串写入所述命令共享文件,发送信号到指定的应用进程中的shell模块中;所述shell模块用于在接收到所述信号后从所述命令共享文件获取并执行所述命令字符串。
9.根据权利要求8所述的装置,其特征在于,还包括:
位于shell进程的读取模块,用于读取预置的进程号共享文件;所述进程号共享文件中存储有应用进程的进程标识;
所述位于shell进程的发送模块包括:
位于shell进程的进程标识获取子模块,用于依据所述命令字符串从所述进程号共享文件中获取对应的进程标识;
位于shell进程的信号发送子模块,用于发送信号至所述进程标识对应的应用进程的shell模块中。
10.一种LINUX系统中应用进程命令处理的装置,其特征在于,在LINUX系统中的应用进程中增加线程并生成shell模块,并且在所述LINUX系统中引入shell进程,所述shell进程与应用进程中的shell模块进行交互,所述的装置包括:
位于shell模块的初始化模块,用于初始化挂接信号处理函数,当所述shell进程从所述LINUX系统的串口输入的命令字符串时,接收到所述shell进程发送的信号并设置命令标识;
位于shell模块的扫描模块,用于在扫描到所述命令标识时,从命令共享文件获取命令字符串;所述命令共享文件由所述shell进程创建,所述命令字符串由所述shell进程获取到所述命令共享文件;
位于shell模块的执行模块,用于解析并执行所述命令字符串。
11.根据权利要求10所述的装置,其特征在于,所述应用进程具有进程标识,所述的装置还包括:
位于shell模块的记录模块,用于将所述进程标识记录到预置的进程号共享文件;
位于shell模块的内存申请模块,用于初始化申请内存;
位于shell模块的读取模块,用于读取所述应用进程编译时生成的MAP命令文件,并将所述MAP命令文件存储于所述申请内存中。
12.根据权利要求11所述的装置,其特征在于,所述MAP命令文件中包括命令名及对应的函数地址;所述位于shell模块的执行模块包括:
位于shell模块的查找子模块,用于依据命令名在所述MAP命令文件中查找到所述命令名对应的函数地址;
位于shell模块的调用子模块,用于调用所述函数地址中的函数,并依据所述参数执行所述函数。
13.根据权利要求10所述的装置,其特征在于,在解析并执行所述命令字符串的步骤之后,还包括:
位于shell模块的清空模块,用于清空所述命令标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310518044.9A CN103593239B (zh) | 2013-10-28 | 2013-10-28 | Linux系统中应用进程命令处理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310518044.9A CN103593239B (zh) | 2013-10-28 | 2013-10-28 | Linux系统中应用进程命令处理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103593239A true CN103593239A (zh) | 2014-02-19 |
CN103593239B CN103593239B (zh) | 2017-06-06 |
Family
ID=50083394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310518044.9A Active CN103593239B (zh) | 2013-10-28 | 2013-10-28 | Linux系统中应用进程命令处理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103593239B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325982A (zh) * | 2015-06-23 | 2017-01-11 | 中兴通讯股份有限公司 | shell处理方法及装置 |
CN110287696A (zh) * | 2018-03-19 | 2019-09-27 | 华为技术有限公司 | 一种反弹shell进程的检测方法、装置和设备 |
CN112685143A (zh) * | 2019-10-17 | 2021-04-20 | 迈普通信技术股份有限公司 | 一种设备操作的实现方法及装置 |
CN116501476A (zh) * | 2023-06-28 | 2023-07-28 | 成都赛力斯科技有限公司 | linux通用字符设备处理方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101067794A (zh) * | 2007-06-14 | 2007-11-07 | 中兴通讯股份有限公司 | 多核处理器及其串口复用方法 |
CN101609429A (zh) * | 2009-07-22 | 2009-12-23 | 大唐微电子技术有限公司 | 一种调试嵌入式操作系统的方法和装置 |
CN102004692A (zh) * | 2010-11-25 | 2011-04-06 | 中兴通讯股份有限公司 | 进程调试方法及装置 |
CN103152515A (zh) * | 2012-07-13 | 2013-06-12 | 成都东方盛行电子有限责任公司 | 泛编辑平台 |
CN103164207A (zh) * | 2011-12-16 | 2013-06-19 | 深圳市快播科技有限公司 | 基于安卓系统的跨硬件平台的应用程序开发方法和系统 |
US20130232248A1 (en) * | 2002-06-12 | 2013-09-05 | Bladelogic, Inc. | Method and system for simplifying distributed server management |
-
2013
- 2013-10-28 CN CN201310518044.9A patent/CN103593239B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130232248A1 (en) * | 2002-06-12 | 2013-09-05 | Bladelogic, Inc. | Method and system for simplifying distributed server management |
CN101067794A (zh) * | 2007-06-14 | 2007-11-07 | 中兴通讯股份有限公司 | 多核处理器及其串口复用方法 |
CN101609429A (zh) * | 2009-07-22 | 2009-12-23 | 大唐微电子技术有限公司 | 一种调试嵌入式操作系统的方法和装置 |
CN102004692A (zh) * | 2010-11-25 | 2011-04-06 | 中兴通讯股份有限公司 | 进程调试方法及装置 |
CN103164207A (zh) * | 2011-12-16 | 2013-06-19 | 深圳市快播科技有限公司 | 基于安卓系统的跨硬件平台的应用程序开发方法和系统 |
CN103152515A (zh) * | 2012-07-13 | 2013-06-12 | 成都东方盛行电子有限责任公司 | 泛编辑平台 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325982A (zh) * | 2015-06-23 | 2017-01-11 | 中兴通讯股份有限公司 | shell处理方法及装置 |
CN110287696A (zh) * | 2018-03-19 | 2019-09-27 | 华为技术有限公司 | 一种反弹shell进程的检测方法、装置和设备 |
CN110287696B (zh) * | 2018-03-19 | 2023-06-20 | 华为技术有限公司 | 一种反弹shell进程的检测方法、装置和设备 |
CN112685143A (zh) * | 2019-10-17 | 2021-04-20 | 迈普通信技术股份有限公司 | 一种设备操作的实现方法及装置 |
CN116501476A (zh) * | 2023-06-28 | 2023-07-28 | 成都赛力斯科技有限公司 | linux通用字符设备处理方法、装置、设备和介质 |
CN116501476B (zh) * | 2023-06-28 | 2023-09-12 | 成都赛力斯科技有限公司 | linux通用字符设备处理方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103593239B (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10664385B1 (en) | Debugging in an actor-based system | |
US8250543B2 (en) | Software tracing | |
US9442822B2 (en) | Providing a visual representation of a sub-set of a visual program | |
CN101446918B (zh) | 一种实现用户态调试器调试单个函数的方法及系统 | |
CN110599183B (zh) | 智能合约调用方法、装置及存储介质 | |
CN104317591A (zh) | 一种基于OSGi的web界面框架系统及web业务处理方法 | |
US20110067007A1 (en) | Automatic thread dumping | |
CN103593239A (zh) | Linux系统中应用进程命令处理的方法及装置 | |
US20080263524A1 (en) | Method and System for State Machine Translation | |
CN111026735B (zh) | 一种数据传输方法、装置、设备及介质 | |
CN103020003A (zh) | 面向多核程序确定性重演的内存竞争记录装置及其控制方法 | |
CN101980546B (zh) | 智能网平台、业务执行方法和分析业务异常的方法 | |
CN112765032A (zh) | 程序调试方法、装置、设备及存储介质 | |
CN102004692A (zh) | 进程调试方法及装置 | |
US10185647B2 (en) | Debugging remote vertex code on test machine | |
US20120059997A1 (en) | Apparatus and method for detecting data race | |
US8826428B2 (en) | Event detection method and apparatus in a distributed environment | |
CN112559525A (zh) | 数据检查系统、方法、装置和服务器 | |
CN110908644A (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
Ábrahám et al. | Inductive proof outlines for monitors in java | |
Yuan et al. | A component development framework for embedded software | |
CN114296809B (zh) | 一种基于操作系统的对象模型构建方法及其系统调用接口 | |
CN112740187A (zh) | 调试程序的方法和系统 | |
CN117472553B (zh) | 一种工作流处理方法、装置、处理设备及可读存储介质 | |
CN102567034B (zh) | 驱动程序管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |