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

本文深入探讨了CLI命令行接口的概念、实现原理及具体案例。通过解析一个简单的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;
}



您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值