CLI (命令行接口) 简易开发

CLI (Command Line Interface) 命令行接口,是底层操作系统必备的工具, 其实它的思路不复杂, 定义一个全局的数组定义整个系统的命令集合, 然后通过注册CLI,撤销CLI等操作对全局数据.在用户入口处加一监听线程, 然后历遍分析输入的数据是否需要属于系统指令.

//==============部分源码实现============================//

#include "string.h"

struct tag_cli_cmd   ///命令行结构体
{
const char* name; //命令名
const char* intro; ///用法介绍
void (*func)(char* inBuf,int i); ///执行函数
};


//各个指令的执行函数

void help_cmd(char *inBuf,int i){
printf("\r\n_____list the help message_____\r\n");
}


void ver_cmd(char *inBuf,int i){
printf("\r\n____show your version_____\r\n");
}


void ipconfig_cmd(char *inBuf,int i){
printf("\r\n____config your system ip_____\r\n");
}


void clr_cmd(char *inBuf,int i){
printf("\r\n____clean the screen_____\r\n");

}


/// //内置一些固化的指令,和ms-dos类似
static const struct tag_cli_cmd cmdList[]={
 {"help","show commands list.",help_cmd},
 {"version","show version for system ",ver_cmd},
 {"ipconfig","ip address setting",ipconfig_cmd},
 {"clr","clean screen",clr_cmd},
};




int main(int argc, char* argv[])
{
  
  int i; 
  int len=sizeof(cmdList)/sizeof(struct tag_cli_cmd);
  printf("-----Current Command Number:%d-----\n",len);
  
   for(i=0;i<len;i++)
   {
     printf("\n<%d> CMD:%-20s MSG:%s ",i,cmdList[i].name,cmdList[i].intro);
   }

 printf("\n\n Please Input command! [help]: ");

 char cmdIn[20]={0};

 scanf("%s",cmdIn);

 for(i=0;i<len;i++){

  if(!strcmp(cmdIn,cmdList[i].name)){

     printf("Got Command index:%d",i);

     cmdList[i].func(0,0);///执行相应函数

      break;

   }
}


   if(i>=len)
   {
       printf(" '%s' is a bad command !",cmdIn);
   }
 
    printf("\n\n______End__________\n");

    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值