专利名称::命令处理方法、装置及系统的制作方法
技术领域:
:本发明实施例涉及通信
技术领域:
,尤其涉及一种命令处理方法、装置及系统。
背景技术:
:在嵌入式开发技术中,操作系统通常提供一种或多种命令行接口,用以实现用户与操作系统更好的交互,这类命令行接口工具统称为命令调试器(SHELL),常见的命令调试器有实时操作系统vxWorks中的函数解析工具WindSh以及linux操作系统中的用户与操作系统内核通讯工具Bash。WindSh是用户与vxWorks之间的接口,提供了函数级的调用,使得用户可以直接调用应用程序模块或vxWorks中的任何全局函数及变量。具体地说,在vxWorks启动之后,创建一个SHELL进程,等待用户的输入命令;用户输入一条命令后,SHELL检查语法是否正确;若正确,SHELL搜索符号表,查找到符号,提取类型和对应的地址等信息;如果输入的命令是函数,则构造参数并执行,如果输入的命令是变量,则直接输出变量值。上述过程中如果出错,则直接返回,并输出错误信息,如果执行过程中造成灾难性结果,则重启SHEEL。但是,vxWorks自带的WindSh只能在vxWorks操作系统下使用,无法实现跨操作系统使用。并且,vxWorks自带的WindSh在多核或分布式平台下,除非使用远程登录工具(如telnet、ssh等)登录到目标系统上,否则主控处理器的SHELL无法执行其它处理器的SHELL命令,即无法实现跨处理器使用,而在嵌入式系统中,使用远程登录登录到目标系统上具有很大的局限性。Bash是用户与linux之间的接口,提供了程序级的调用,使得用户可以直接调用文件系统中的应用程序。在linux系统下,Bash是命令语言、命令解释程序及程序设计语言的统称。具体地说,在linux启动之后,创建一个SHELL进程,等待用户的输入命令;用户输入一条命令后,SHELL进行语法解析;若正确,SHELL检查该命令是否为内部命令和应用程序;如果是内部命令,则查找命令,该命令被分解为系统调用并传送给linux内核;如果是应用程序,则执行该应用程序;如果既不是内部命令也不是可执行的应用程序,则输出错误信息。但是,linux自带的Bash只能在linux操作系统下使用,无法实现跨操作系统使用。并且,与WindSh相同的是,也无法实现跨处理器使用。
发明内容本发明实施例提供了一种命令处理方法、装置及系统,用以实现跨操作系统使用和跨处理器使用。本发明实施例提供了一种命令处理方法,包括本地用户交互接口接收输入命令;当所述输入命令为切换命令时,向所述切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。本发明实施例提供了一种命令处理装置,包括接收模块,用于接收输入命令;第一发送模块,用于当所述输入命令为切换命令时,向所述切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。本发明实施例提供了一种包括上述命令处理装置的命令处理系统,还包括远程命令处理单元,用于接收命令处理装置发送的登录命令,使得用户登录到所述远程命令处理单元;以及,接收命令处理装置发送的应由所述远程命令处理单元处理的后续命令,由远程命令处理进程对所述后续命令进行相应处理;本地命令处理单元,用于当输入命令既不是切换命令也不是退出命令时,接收命令处理装置发送的输入命令,由本地命令处理进程对所述输入命令进4亍相应的处理。本发明实施例中,当本地用户交互接口接收到的输入命令是切换命令时,本地用户交互接口向切换命令指定的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。由此可见,本发明实施例中命令交互是由本地用户交互接口完成,通过本地用户交互接口用户可以登录到远程操作系统或远程处理器中的远程命令处理单元,将本发明实施例提供的方法应用于分布式系统或多核处理器系统,可以实现跨操作系统使用和跨处理器使用。为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以才艮据这些附图获得其他的附图。图1为本发明实施例一命令处理方法的流程图2为本发明实施例二命令处理方法的流程图3为本发明实施例二命令处理方法中由远程命令处理进程处理后续命令的流程图4为本发明实施例一命令处理装置的结构示意图;图5为本发明实施例二命令处理装置的结构示意图;图6为本发明实施例命令处理系统的结构示意图。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例一命令处理方法的流程图。如图1所示,本实施例具体包括如下步骤步骤101、本地用户交互接口接收输入命令。本地用户交互接口是用户与本地操作系统或本地处理器之间的接口,其功能主要是接收用户输入的命令,对命令进行识别,并发送给本地命令处理单元或远程命令处理单元。步骤102、当输入命令为切换命令时,本地用户交互接口向切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。具体的,本地用户交互接口进程可以对输入命令进行识别,判断是否切换命令,切换命令为用户输入的向远程操作系统或远程处理器切换的命令。若判断出输入命令是切换命令,本地用户交互接口向切换命令指定的远程命令处理单元发送登录命令,该登录命令为用户登录远程操作系统或远程处理器的命令,使得用户登录到远程命令处理单元。本实施例中,当本地用户交互接口接收到的输入命令是切换命令时,本地用户交互接口向切换命令指定的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。由此可见,本实施例中命令交互是由本地用户交互接口完成,通过本地用户交互接口用户可以登录到远程操作系统或远程处理器中的远程命令处理单元,根据本实施例提供的方法可以在分布式系统或多核处理器系统中实现il争操作系统使用和跨处理器使用。图2为本发明实施例二命令处理方法的流程图。本实施例可以应用在分布式系统或多核处理器系统中。分布式系统包括主控板和一个或多个其它板(如业务板或接口板等),其中主控板为本地系统,其它板为远程系统。多核处理器系统包括控制单元和一个或多个业务处理单元、接口处理单元等除控制单元之外的其它单元,多核处理器可以为不对称多重处理(AsymmetricMulti-Processing,简称AMP)架构或对称多重处理(SymmetricMulti-Processing,简称SMP)架构,若为AMP架构,则控制单元为本地处理器,其它单元远程处理器;若为SMP架构,任何一个单元都可以为本地处理器或远程处理器,本地处理器和远程处理器的区别至少为进程号不相同。本实施例中,在功能上将SHELL划分为用户交互接口与命令处理单元,作为本地SHELL,其本地用户交互接口不仅与本地命令处理单元连接,还与远程系统或远程处理器的远程SHELL中的远程命令处理单元连接。本地用户交互接口与本地命令处理单元的交互方式可以采用直接调用的方式;本地用户交互接口与远程命令处理单元的交互方式可以通过多种灵活的方式来实现,如采用二层交换或核间通信等方式进行通信。在执行本实施例提供的方法之前,需要创建本地SHELL和远程SHELL。其中本地SHELL的创建过程为当操作系统启动时,创建本地用户交互接口进程和本地命令处理进程,并传入带符号表的文件信息和本地命令处理单元标识(ID),本地命令处理进程根据文件信息获取符号表,映射到内存中。远程SHELL的创建过程与此类似,其不同之处在于远程SHELL可以不创建远程用户交互接口进程。这样,每个命令处理单元都有自己唯一的标识,该标识#4居系统结构的不同而有所区别,例如在多核处理器系统中该标识可以为CPU号和进程号,在分布式系统中该标识可以为板号、CPU号和进程号。上述带符号表的文件可以具体为可执行可链接格式(ExecutableandLinkingFormat,简称ELF)文件,^旦本实施例不^f又限于此。如图2所示,本实施例具体包括如下步骤步骤201、在登录到本地用户交互接口之后,本地用户交互接口接收输入命令。具体的,在用户登录到本地用户交互接口之后,本地用户交互接口等待用户输入命令,当用户输入一条以回车为结束符的输入命令后,本地用户交互接口接收到该输入命令。步骤202、本地用户交互接口进程判断输入命令是否为切换命令,若是,则执行步骤203;否则执行步骤206。具体的,切换命令为用户输入的向远程系统或远程处理器切换的命令。本地用户交互接口进程可以对该输入命令进行识别,判断出是否为切换命令。步骤203、本地用户交互接口向切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令。具体的,由于该切换命令中携带有远程命令处理单元的标识,该标识对应的远程命令处理单元即为切换命令指定的远程命令处理单元。具体地,在分布式系统中,主控板的本地用户交互接口通过以太网口向其它板的远程命令处理单元发送登录命令;在多核处理器系统中,控制单元的本地用户交互步骤204、远程命令处理单元接收到登录命令后,向本地用户交互接口返回回应消息,使用户即登录到远程命令处理单元,进入步骤205。具体的,远程命令处理单元接收到登录命令后,会向本地用户交互接口返回回应消息。如果当本地用户交互接口在预定时间内没有接收到远程命令处理单元返回的回应消息时,本地用户交互接口进程输出切换失败消息,即用户登录远程命令处理单元失败。步骤205、在登录到远程命令处理单元之后,本地用户交互接口将接收命令处理进程对所述后续命令进行相应处理;在用户成功登录到远程命令处理单元之后,本地用户交互接口等待用户输入后续命令,当用户输入一条以回车为结束符的后续命令后,本地用户交互接口接收到该后续命令。如果该后续命令既不是切换命令也不是退出命令,且识别出该命令应该由上述远程命令处理单元处理时,则本地用户交互接口将后续命令发送给远程命令处理单元,由远程命令处理进程对所述后续命令进4亍相应处理。具体地,在分布式系统中,主控板的本地用户交互接口可以通过以太网口向其它板的远程命令处理单元发送后续命令;在多核处理器系统中,控制单元的本地用户交互接口可以通过核间通信方式向其它单元的远程命令处理单元发送后续命令。进一步的,在步骤205之前还可以包括本地用户交互接口判断后续命令是否为退出命令,若是,则退出当前的命令处理进程,具体的,也就是说,退出远程命令处理进程;否则,执行步骤205。该退出命令是用户输入的退出当前登录的远程系统或远程处理器的命令。步骤206、本地用户交互接口进程判断输入命令是否为退出命令,若不是,则执行步骤207;否则执行步骤208。本步骤的退出命令是用户输入的退出当前登录的本地系统或本地处理器的命令,本地用户交互接口进程可以对该输入命令进行识别,判断出是否为退出命令。步骤207、本地用户交互接口将输入命令传送给本地命令处理单元,由本地命令处理进程处理该输入命令。步骤208、退出当前命令处理进程;具体的,如果当前由本地命令处理单元处理命令,则退出本地命令处理进程,如果当前由远程命令处理单元处理命令,则退出远程命令处理进程。本实施例的步骤206也可以在步骤202之前执行,当判断出输入命令是退出命令时,退出当前登录的本地命令处理进程,当判断出输入命令不是退出命令时,执行步骤202。图3为本发明实施例二命令处理方法中由远程命令处理进程处理后续命令的流程图。如图3所示,进一步的,步骤205中由远程命令处理进程处理后续命令可以具体包括步骤301、远程命令处理进程对后续命令进行语法或词法分析,若正确,则执行步骤302;否则,执行步骤303。步骤302、远程命令处理进程执行后续命令,远程命令处理单元向本地用户交互接口返回执行结果。本步骤的处理过程可以具体为远程命令处理进程在远程系统或远程处理器的符号表中查找后续命令对应的入口地址,从入口地址开始运行其中的函数;采用重定向技术,将远行函数的执行结果返回给本地用户交互接口。如果在后续命令执行过程中出现异常,则复位远程命令处理进程。步骤303、远程命令处理单元向本地用户交互接口返回语法或词法错误信息。步骤207中由本地命令处理进程处理输入命令的过程与图3所示的过程类似,在此不再赘述。需要说明的是,本实施例提供的方法可以使用标准C语言来实现,也就是说,可以以标准C语言来实现本实施例中SHELL的功能。本实施例中,用户交互接口和命令处理单元分离,也即命令交互与命令执行分离,解决了现有技术在分布式系统或多核处理器系统中只有一个主控单元且只有一个串口的情况下,用户很难登录的问题。当将本实施例提供的方法应用于分布式系统或多核处理器系统时,本地系统和远程系统可以为不同的操作系统,本地处理器和远程处理器也可以为不同的处理器,通过本地用户交互接口与远程命令处理单元之间的交互实现了跨操作系统和跨处理器使用,从而实现了一个主控单元与其它单元的交互。本实施例通过使用函数级调用,极大地方便了分布式系统或多核处理器系统的调试。此外,由于本实施例可以采用标准C语言来实现SHELL的功能,不局限于特定的带符号表的文件格式,也不局限于用户交互接口与命令处理单元ii之间具体的通信方式,系统的相关功能可以即插即用,因而不局限于具体的操作系统,所以提高了代码的可移植性。图4为本发明实施例一命令处理装置的结构示意图。本实施例中的命令处理装置可以具体为上述方法实施例中的本地用户交互接口。如图4所示,本实施例包括接收模块11和第一发送模块12。其中接收模块ll,用于接收输入命令;第一发送模块12,用于当输入命令为切换命令时,向切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。本实施例的本地用户交互接口是用户与本地操作系统或本地处理器之间的接口,接收模块ll接收到输入命令,通过对输入命令进行识别,判断是否切换命令,切换命令为用户输入的向远程操作系统或远程处理器切换的命令。若判断出输入命令是切换命令,由第一发送模块12向切换命令指定的远程命令处理单元发送登录命令,该登录命令为用户登录远程操作系统或远程处理器的命令,使得用户登录到远程命令处理单元。本实施例中,当接收模块接收到的输入命令是切换命令时,第一发送才莫块向切换命令指定的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元,由于命令交互是由本地用户交互接口完成,通过本地用户交互接口用户可以登录到远程操作系统或远程处理器中的远程命令处理单元,将本实施例提供的装置应用于分布式系统或多核处理器系统,可以实现跨才喿作系统使用和跨处理器使用。图5为本发明实施例二命令处理装置的结构示意图。如图5所示,在上述装置实施例一的基础上,本实施例还包括第二发送模块13,该第二发送才莫块13用于当输入命令既不是切换命令也不是退出命令时,将输入命令发送给本地命令处理单元,由本地命令处理进程对输入命令进行相应的处理。具体的,接收模块ll接收到输入命令后,可以对输入命令进行识别,判断是否切换命令或退出命令(具体的判断过程可以参见方法实施例二),若判断出输入命令既不是切换命令也不是退出命令,第二发送模块13将输入命令传送给本地命令处理单元,由本地命令处理进程对输入命令进行相应的处理。进一步的,本实施例还可以包括退出模块14,该退出模块14用于当输入命令为退出命令时,退出当前命令处理进程。具体的,如果当前由本地命令处理单元处理命令,则退出本地命令处理进程,如果当前由远程命令处理单元处理命令,则退出远程命令处理进程。上述第一发送模块12还可以用于将接收到的由远程命令处理单元处理的后续命令发送给远程命令处理单元,由远程命令处理进程对后续命令进行相应处理。具体的处理过程可以参见方法实施例二。本实施例中,用户交互接口和命令处理单元分离,也即命令交互与命令执行分离,当将本实施例提供的装置应用于分布式系统或多核处理器系统时,本地系统和远程系统可以为不同的操作系统,实现了跨才喿作系统使用,本地处理器和远程处理器可以为不同的处理器,实现了跨处理器使用。本实施例还实现了函数级调用,极大地方便了分布式系统或多核处理器系统的调试。图6为本发明实施例命令处理系统的结构示意图。如图6所示,本实施例包括命令处理装置(即为本地用户交互接口)21、远程命令处理单元22和本地命令处理单元23。其中,命令处理装置21的具体结构可以参见装置实施例的描述。远程命令处理单元22用于接收命令处理装置21发送的登录命令,使得用户登录到远程命令处理单元22;以及,接收命令处理装置21发送的应由该远程命令处理单元22处理的后续命令,由远程命令处理进程对后续命令进4亍相应处理。本地命令处理单元23用于当输入命令既不是切换命令也不是退出命令时,接收命令处理装置21发送的输入命令,由本地命令处理进程对输入命令进行相应的处理。本实施例中命令交互是由命令处理装置完成,通过命令处理装置用户可以登录到远程操作系统或远程处理器中的远程命令处理单元,将本实施例提供的系统应用于分布式系统或多核处理器系统,可以实现跨操作系统使用和跨处理器使用。本领域普通4支术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤,而前述的存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明实施例的技术方案,而非对其限制;尽管参照前述实施例对本发明实施例进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例各实施例技术方案的精神和范围。权利要求1、一种命令处理方法,其特征在于,包括本地用户交互接口接收输入命令;当所述输入命令为切换命令时,向所述切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。2、根据权利要求1所述的命令处理方法,其特征在于,还包括当所述输入命令既不是切换命令也不是退出命令时,所述本地用户交互接口将所述输入命令传送给本地命令处理单元,由本地命令处理进程对所述输入命令进行相应的处理。3、根据权利要求1所述的命令处理方法,其特征在于,还包括当所述输入命令为退出命令时,退出当前的命令处理进程。4、根据权利要求1所述的命令处理方法,其特征在于,还包括本地用户交互接口将接收到的应由远程命令处理单元处理的后续命令发送给远程命令处理单元,由远程命令处理进程对所述后续命令进行相应处理。5、才艮据权利要求4所述的命令处理方法,其特征在于,所述远程命令处理进程对所述后续命令进行相应的处理包括远程命令处理进程对所述后续命令进行语法或词法分析,若正确,则执行所述后续命令;否则,返回语法或词法错误信息。6、一种命令处理装置,其特征在于,包括接收模块,用于接收输入命令;第一发送模块,用于当所述输入命令为切换命令时,向所述切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。7、根据权利要求6所述的命令处理装置,其特征在于,还包括第二发送模块,用于当所述输入命令既不是切换命令也不是退出命令时,将所述输入命令传送给本地命令处理单元,由本地命令处理进程对所述输入命令进行相应的处理。8、根据权利要求6所述的命令处理装置,其特征在于,还包括退出模块,用于当所述输入命令为退出命令时,退出当前的命令处理进程。9、才艮据权利要求6所述的命令处理装置,其特征在于所述第一发送模块还用于将接收到的应由所述远程命令处理单元处理的后续命令发送给远程命令处理单元,由远程命令处理进程对所述后续命令进4亍相应处理。10、一种包括权利要求6至9任一权利要求所述的命令处理装置的命令处理系统,其特征在于还包括远程命令处理单元,用于接收命令处理装置发送的登录命令,使得用户登录到所述远程命令处理单元;以及,接收命令处理装置发送的应由所述远程命令处理单元处理的后续命令,由远程命令处理进程对所述后续命令进行相应处理;本地命令处理单元,用于当输入命令既不是切换命令也不是退出命令时,接收命令处理装置发送的输入命令,由本地命令处理进程对所述输入命令进4亍相应的处理。全文摘要本发明实施例涉及一种命令处理方法、装置及系统,其中方法包括本地用户交互接口接收输入命令;当所述输入命令为切换命令时,向所述切换命令指定的远程操作系统或远程处理器中的远程命令处理单元发送登录命令,使得用户登录到远程命令处理单元。本发明实施例命令交互与命令执行分离,将本发明实施例应用于分布式系统或多核处理器系统,实现了跨操作系统使用和跨处理器使用。文档编号G06F9/30GK101615112SQ200910165459公开日2009年12月30日申请日期2009年7月31日优先权日2009年7月31日发明者杨华志申请人:成都市华为赛门铁克科技有限公司