我的编程空间,编程开发者的网络收藏夹
学习永远不晚

linux中解析命令行选项getopt_long怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

linux中解析命令行选项getopt_long怎么用

这篇文章给大家分享的是有关linux中解析命令行选项getopt_long怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

linux解析命令行选项getopt_long用法
在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子。
下面介绍使用getopt_long解析命令行选项。
程序中主要使用:   
短选项 长选项 是否需要参数 备注
-v  --version 否 查询版本号
-n  --name 是(用户名) 指定使用者
-d  --debug 否 是否已测试
 1、函数出处    

代码如下:


[cpp]  
#include <getopt.h> //getopt_long()头文件位置  
int getopt_long (int ___argc, char *const *___argv,  
           const char *__shortopts,  
               const struct option *__longopts, int *__longind);  
int getopt_long_only (int ___argc, char *const *___argv,  
                const char *__shortopts,  
                    const struct option *__longopts, int *__longind);  


2、参数介绍
argc argv :直接从main函数传递而来
shortopts:短选项字符串。如”n:v",这里需要指出的是,短选项字符串不需要&lsquo;-&rsquo;,而且但选项需要传递参数时,在短选项后面加上“:”。
longopts:struct option 数组,用于存放长选项参数。
longind:用于返回长选项在longopts结构体数组中的索引值,用于调试。一般置为NULL
下面介绍struct option

代码如下:


[cpp]  
struct option  
{  
 const char *name;//长选项名  
 int has_arg;//是否需要参数  
 int *flag;  
 int val;  
};


name:长选项名字
has_arg:是否需要参数。值有三种情况

代码如下:


[cpp]  
# define no_argument        0    //不需要参数  
# define required_argument  1    //必须指定参数  
# define optional_argument  2    //参数可选


flag 和val
flag和val相互依赖,主要分两种情况:
(1)、flag为NULL,val值用于确定该长选项,所以需要为长选项指定唯一的val值。这里也为长选项和短选项建立了桥梁。
(2)、flag不为NULL,则将val值存放到flag所指向的存储空间,用于标识该长选项出现过。
3、返回值
程序中使用短选项,则返回短选项字符(如&lsquo;n'),当需要参数是,则在返回之前将参数存入到optarg中。
程序中使用长选项,返回值根据flag和val确定。当flag为NULL,则返回val值。所以根据val值做不同的处理,这也说明了val必须唯一。当val值等于短选项值,则可以使用短选项解析函数解析长选项;当flag不为NULL,则将val值存入flag所指向的存储空间,getopt_long返回0
出现未定义的长选项或者短选项,getopt_long返回?
解析完毕,getopt_long返回-1
4、实例
     理论要与实际相结合

代码如下:


[cpp]  
#include <stdio.h>  
#include <stdlib.h>  
#include <getopt.h> //getopt_long()头文件位置  
     
int main(int argc, char** argv)  
{  
   const char *optstring="n:v";  
   int c,deb,index;  
   struct option opts[]={{"username",required_argument,NULL,'n'},  
                         {"version",no_argument,NULL,'v'},  
                         {"debug",no_argument,&deb,1},  
                         {0,0,0,0}};  
   while((c=getopt_long(argc,argv,optstring,opts,&index))!=-1)  
   {  
       switch(c)  
       {  
       case 'n'://-n 或者 --username 指定用户名  
           printf("username is %s\n",optarg);  
           break;  
       case 'v'://-v 或者--version,输出版本号  
           printf("version is 0.0.1 \n");  
           break;  
       case 0://flag不为NULL  
           printf("debug is %d\n",deb);  
           break;  
       case '?'://选项未定义  
           printf("?\n");  
           break;  
       default:  
           printf("c is %d\n",c);  
           break;  
       }  
   }      
   return 0;  
}


运行截图:
linux中解析命令行选项getopt_long怎么用
说明一下:getopt_long_only,这个函数功能与getopt_long相同,只是可以使用&rsquo;-&lsquo;后面跟长选项名,如./main -username jackie

感谢各位的阅读!关于“linux中解析命令行选项getopt_long怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

linux中解析命令行选项getopt_long怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

linux中解析命令行选项getopt_long怎么用

这篇文章给大家分享的是有关linux中解析命令行选项getopt_long怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。linux解析命令行选项getopt_long用法在程序中难免需要使用命令行选项,可以
2023-06-13

Oscdimg命令行选项怎么用

这篇文章给大家分享的是有关Oscdimg命令行选项怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Oscdimg 命令行选项 更新时间: 2009年5月 应用到: Windows 7 Oscdimg 是一个命
2023-06-08

linux shell命令行选项与参数怎么使用

在Linux shell中,命令行选项和参数用于向命令提供额外的信息或配置。下面是一些常用的使用方式:1. 选项使用一个或多个短横线(-)或双短横线(--)开头,紧跟着选项名称。例如:```ls -lls --color=auto```2.
2023-08-17

Maven命令行选项怎么使用

今天小编给大家分享一下Maven命令行选项怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Maven 选项Maven
2023-06-26

linux shell命令行选项与参数用法详解

问题描述:在linux shell中如何处理tail -n 10 access.log这样的命令行选项?在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。1,直接处理,依次对$1,$2,...,$n进行解析,分别
2022-06-04

linux中不常用的gcc命令行选项有哪些

小编给大家分享一下linux中不常用的gcc命令行选项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!生成 -Wall 选项不包括的警告尽管 gcc 编译器的
2023-06-16

如何理解linux shell命令行选项与参数用法

这篇文章主要讲解了“如何理解linux shell命令行选项与参数用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解linux shell命令行选项与参数用法”吧!问题描述:在lin
2023-06-09

Linux中解析域名命令dig怎么用

这篇文章主要介绍了Linux中解析域名命令dig怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。dig命令是常用的域名查询工具,可以用来测试域名系统工作是否正常。查询单个
2023-06-27

怎么解析Rsync命令的17个备份选项

这篇文章将为大家详细讲解有关怎么解析Rsync命令的17个备份选项,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。常常备份是良好的习惯,只是这么好习惯只有在无数次的顿足捶胸、呼天抢地的懊恼之后
2023-06-28

在Linux命令行下如何使用原力选项

小编给大家分享一下在Linux命令行下如何使用原力选项,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cpcp 是 “copy” 的缩写,这是个被用来复制文件或者目
2023-06-16

怎么在Shell脚本中使用getopts处理多命令行选项

这篇文章给大家介绍怎么在Shell脚本中使用getopts处理多命令行选项,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在Linux系统中,许多命令都提供了选项,使用不同的选项就会得到不通的执行结果例如:ls命令,ls
2023-06-09

Python命令行解析器argparse怎么使用

这篇文章主要讲解了“Python命令行解析器argparse怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python命令行解析器argparse怎么使用”吧!第1章 argpars
2023-06-22

Linux下openssl命令行怎么用

这篇文章主要为大家展示了“Linux下openssl命令行怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下openssl命令行怎么用”这篇文章吧。  1. base64编码/解码
2023-06-28

Linux命令中的rpm命令怎么用

这篇文章的内容主要围绕Linux命令中的rpm命令怎么用进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在Linux中,RPM是进行软件得安装、卸载、
2023-06-28

怎么在PHP中运行Linux命令

这篇文章的内容主要围绕怎么在PHP中运行Linux命令进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在开发过程中有时会需要在PHP函数中运行Linu
2023-06-28

Linux中文本分析awk命令怎么用

这篇文章主要介绍Linux中文本分析awk命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。awk [options] pattern
2023-06-16

Shell脚本中使用getopts处理多命令行选项

在linux系统中,许多命令都提供了选项,使用不同的选项就会得到不通的执行结果 例如:ls命令,ls命令提供了多个选项:-l、-a、-A、-h、-i等等,每个选项具有不同的功能,我们自己写脚本时也可以定义选项,提示用户如何使用,本文介绍如何
2022-06-04

怎么使用linux命令行登陆

本篇内容介绍了“怎么使用linux命令行登陆”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!以下是linux命令行登陆的方法。作为默认,RED
2023-06-17

编程热搜

目录