c语言中如何开发CLI

在一些底层的系统中,一定都是采用C作为开发语言,而且底层与UI进行交互,一般都会采用CLI来实现,CLI(Command Line Interface)也就是命令行接口。一定来说都是通过它来提供接口给UI或者一些高级用法。

熟悉PERL或者其他一些脚本的人都知道,CLI实现起来是非常简单,想PERL就是采用GEOPT来实现的。同样在C语言里面也是很简单的。

下面我来详细介绍下getopt_long的用户。

首先讲下它所涉及的数据结构:
他的结构定义都在getopt.h这个结构体中,下面这个option是一个非常重要的结构体,它用于存储命令的参数以及缩写。


struct option
{
const char *name;
/* has_arg can't be an enum because some compilers complain about
type mismatches in all the code that assumes it is an int. */
int has_arg;
int *flag;
int val;
};



这个结构体是用于存储命令参数的,第一参数NAME就是我们参数的名字,第二个参数就是表示这个参数是否有参数值,最后一个val就是缩写。

我们来举个最简单的例子


struct option longopts[] = 
{
/* { name has_arg *flag val } */
{"login_user", 1, 0, 'U'},
{"methodname", 0, 0, 'M'},
}



这个例子就定义了两个参数,第一个login_user第二个位methodname,而他们的缩写分别为U,和M 而且他们都是参数值的。

同时我们还需要定义一个char的字符指针
例如上面的例子我们就需要这样定义 char *shortopts = "U:M";

这个指针指向了这些参数的缩写,如果它后面有冒号的话就表明它是带参数值的参数。反之则反。

上面我简述了下他的数据结构,下面它的一个重要函数出场了,它就是getopt_long


extern int getopt_long (int ___argc, char *const *___argv,
const char *__shortopts,
const struct option *__longopts, int *__longind)



他第一个参数就是参数的个数
也就是我们C语言中int main(int argc,char ** argv) 这里的argc 第二个参数就是这里的**argv 一个指向指针的指针,存放着各种命令参数。
第三个就是我们定义的 shortopts 第四个是我们的longopts

它每执行一次获取一个参数,并且会返回参数名的缩写对于的值,下面我来举个简单的例子



while((c=getopt_long(argc,argv,shortopts,longopts,0))
!=EOF)
{
switch(c)
{
case 'M':
这里就把我们输入的参数值获取过来。
}
}





这里我们需要将一下一个全局变量 *optarg,它指向我们存放的参数值。

在case中我们需要将我们输入的参数值获取过来。


这样一来我们就可以轻松完成我们的CLI。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值