getopt_long() 参数详解

getopt()与getopt_long()的使用简介 感性认识 getopt()与getopt_long()是专门处理命令行参数的两个函数,getopt()处理短参数,getopt_long()处理长参数。还不明白请看下面这张图: 解析 -t yiqi 就是这两个函数做的事,下面我们一起来看看究竟如何使用好这两个函数。还不明白的请看下图: 非常清楚,命令行参数由Command name,Option,Option argument以及Operands组成。 Command name不用多说,就是程序的名称。 操作对象Operands又称no. 阅读详情

【blog.youkuaiyun.com/lanmanck】

原型为:int getopt_long(int argc, char * const argv[],

                  const char *optstring,
                  const struct option *longopts, int *longindex);

其中 argc argv[]就不讲了,是main()的原参数。

讲下optstring和logopts,例如ti的例程中有如下定义:

const Char shortOptions[] = "a:s:v:y:O:kt:lfohd:"; /* optstring,後面加':'表示該參數在使用時,後面需給設定值 */
const struct option longOptions[] = {
	/* name 	has_arg			flag	val */
        {"audiofile",        required_argument, NULL, 'a'}, /* 指向长选项名称(带两个短横线)的指针 */
        {"speechfile",       required_argument, NULL, 's'},
        {"videofile",        required_argument, NULL, 'v'},
        {"display_standard", required_argument, NULL, 'y'},
        {"display_output",   required_argument, NULL, 'O'},
        {"keyboard",         no_argument,       NULL, 'k'},
        {"time",             required_argument, NULL, 't'},
        {"loop",             no_argument,       NULL, 'l'},
        {"osd",              no_argument,       NULL, 'o'},
        {"help",             no_argument,       NULL, 'h'},
        {"exit",             no_argument,       NULL, 'e'},
	{"daemonver",        required_argument, NULL, 'd'},
        {0, 0, 0, 0}
    };

什么意思呢?这2个数组分别表示短/长参数的含义,这样getopt_long就知道怎么解析,具体一点:

-a 和 --audiofile是一个意思,但可以不同时指定,没有指定那getopt_long就找不到呗,没什么大不了。

另外shortOptions[]里面的冒号是什么意思?

例如上面的a:s:v:kt:,咦,为什么k后面就没有冒号了?可以跟t连在一起?

是这样的,如果该字母后面有冒号,表示该字母后面有所带的参数,例如我们输入-a myfile.h264 -k,这样我们在碰到-a时,就可以使用optarg得到myfile.h264了。而-k没有参数,我们碰到-k时自己处理一下即可。

还有个index,大家man一下了。以后有空再补充 。

详细解析命令行的getopt_long()函数 getopt_long支持长选项的命令行解析,函数中的参数argc和argv通常直接从main()的两个参数传递而来 立即下载

相关推荐

智能车竞赛轮腿穿越组:GPS+IMU导航绕桩实战技巧(附避坑指南)

本文详细介绍了智能车竞赛轮腿穿越组中GPS+IMU导航绕桩的实战技巧,包括硬件选型、传感器标定、路径规划及多传感器数据融合策略。通过实际案例和避坑指南,帮助参赛队伍提升导航精度和稳定性,避免常见错误。特别强调IMU安装位置和标定对导航系统的重要性。

gin88的博客 583

linux命令行参数解析之getopt_long()函数

getopt_long支持长选项的命令行解析,函数中的参数argc和argv通常直接从main()的两个参数传递而来。 头文件 #include<getopt.h> 函数原型 int getopt_long(int argc,char * const argv[],const char *optstring,const struct option *longopts,int *l...

lx123010的专栏 732

别只会‘pip install’了!当Python报错找不到‘pkg_resources’时,你的setuptools可能出大问题

本文深入解析Python开发中常见的`ModuleNotFoundError: No module named 'pkg_resources'`错误,揭示其背后的setuptools依赖问题。通过系统化的诊断与修复指南,帮助开发者理解Python包管理机制,并提供从基础到高级的解决方案,确保pip和setuptools的正常运行。

weixin_42523711的博客 433

getopt_long()函数详解

#include int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex); 函数用途:getopt被用来解析命令行选项参数,getopt_long支持长选项的命令行解析,使用man getopt_

haijiaoqihao20160106的博客 4452

STM32F407+LWIP实战:手把手教你移植mbedtls库实现Modbus TCP双向认证

本文详细介绍了如何在STM32F407微控制器上移植mbedtls库,结合LWIP协议栈实现Modbus TCP的双向认证功能。通过TLS 1.2加密通道,有效提升工业物联网通信的数据安全性,涵盖证书管理、内存优化及性能调优等关键步骤,为嵌入式系统开发者提供了一套完整的解决方案。

weixin_28721917的博客 516

从零到一:手把手教你用DaVinci Configurator配置一个完整的AUTOSAR接口通信实例

本文详细介绍了如何使用DaVinci Configurator工具配置AUTOSAR接口通信实例,从环境准备到SWC端口定义、BSW模块配置,再到通信验证的全过程。通过实战案例'车窗控制'功能模块,帮助开发者快速掌握AUTOSAR架构下的接口通信配置技巧,提升汽车电子软件开发效率。

weixin_42557830的博客 450

浅析linux的命令行的参数getopt_long函数

前言 在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。 一、关于命令行参数 命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"–",如下表(ls 命令参数)所示,其中-a,-A,-b都表示短选项,–all,–almost-all, --author都表示长选项。他们两者后面都可选择性添加额外参数。

赵凯月的博客 762

idea出现 EXCEPTION_ACCESS_VIOLATION (0xc0000005) 的解决方法

idea启动的时候出现如下问题,以为没啥事,就索性关闭 后面再打开idea的时候发现直接闪退,之后打开其他软件,直接蓝屏

码农研究僧的博客 4815

getopt()函数获取两个以上参数的方法

最近一直在Linux下写程序,命令行参数一般都是手动写程序分析处理,特别麻烦而求代码也很乱。最近发现有getopt()可以帮助进行参数分析,方便了很多。但是发现一个问题,getopt()每个选项只能用optarg获得一个参数,要是想要获得两个以上的参数就没办法了。在网上查了以下也没有什么特别好的办法。虽然getopt_long()可以获得多个参数,但是这个函数需要的参数太多了,不喜欢用。后来看了以

Darry的博客 9654

C# 零基础入门知识点汇总

本文属于C#零基础入门之百识百例系列目录文章。此系列文章已经完结,欢迎大家点击文中文章链接查看详情进行学习。

陈言必行 -- Unity游戏开发领域优质博主 5347

ubuntu20 安装px4、mavros、QGroundControl

首先安装一下ant,否则没法运行,同时因20.04的缺少动态库libawt_xawt.so无法被Java8给调用,我的解决办法是去18.04把18.04的相同路径下的动态库libawt_xawt.so移动到20.04的/usr/lib/jvm/java-11-openjdk-amd64/lib/路径中。用rosdepc的时候,你得确保你用的是鱼香ROS的提供的ROS安装方法,否则是没有rosdepc的。make px4_sitl gazebo之前,可以安装一下gazebo的 模型。二、安装MAVROS。

qq_58060770的博客 3349

命令行参数解析函数getopt_long() 使用详解

当一个用C语言编写的Linux或UNIX程序运行时,它是从main函数开始的。对这些程序而言,main函数的声明如下所示:int main(int argc, char *argv[])其中argc是程序参数的个数(int),argv是一个代表参数自身的字符串数组(char **)。无论操作系统何时启动一个新程序,参数argc和argv都被设置并传递给main。这些参数通常由另一个程序提供,这个程序

Flass Blog 2639

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

getopt_long()----命令行参数解析函数使用详解

为什么需要命令行解析函数? 当一个用C语言编写的Linux或UNIX程序运行时,它是从main函数开始的。函数声明可以如下: int main(int argc, char *argv[])其中argc是程序参数的个数,argv是一个代表参数自身的字符串数组。无论操作系统何时启动一个新程序,参数argc和argv都被设置并传递给main。这些参数通常由另一个程序提供,这个程序一般是shell,

MR_D_j的专栏 1837

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux——getopt()和getopt_long()函数及optarg,optind, opterr, optopt全局变量

getopt() 函数 getopt() 头文件 #include&lt;unistd.h&gt; 定义函数 int getopt(int argc,char * const argv[ ],const char * optstring); extern char *optarg; extern int optind, opterr, optopt; getopt() 所设置的全局变量包括: o...

夜风的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

linux getopt_long函数,命令行参数处理-getopt()和getopt_long()

在实际编程当中,自己编写代码处理命令行参数是比较麻烦且易出错的。一般我们会直接使用getopt()和getopt_long()函数,下文将介绍具体的使用方法。getopt()getopt()用于处理”单字母“选项,如-a, -t等。函数声明如下:#include int getopt(int argc, char *const argv[], const char *optstring);exte...

weixin_35940071的博客 487

Linux应用之参数解析函数---getopt()与getopt_long()

在Linux应用程序中往往运行时会带入参数,例如./xxx_tool -f filename -d portnum,这里-f 和-d后面都带有参数,再比如最基础的命令ls,- -help之后告诉你一大堆可使用的参数(如下图),例如短参数-a, 长参数–all。这里提及一个概念:在Linux命令行参数可以分为两类,一类是短选项,参数前加一个杠"-“,如-a -A都是,另外一类是长选项,长选项在参数前连续加两个杠”–",如–all,–author都表示长选项。

lihuan680680的博客 950

getopt_long 应用及nand读写文件操作 upgrade操作

upgrade 操作,nand读写擦除操作,getopt_long用法

AS520213211314的专栏 428

getopt函数php,【整理】getopt()或getopt_long()与optarg

[整理]getopt()或getopt_long()与optarggetopt或getopt_long 是一个Linux下面的库函数,作用就是解析命令行的输入。其目的就是减轻程序员自己的负担,可以直接使用系统提供的库函数,方便、高效和更安全地解析命令行的输入。如果你编写的应用程序中的输入参数很少,就2,3个,那么就可以自己去判断,类似于:mtd-util中的flash_erase.c中的。。。。i...

weixin_33272141的博客 408

浅谈linux的命令行解析参数之getopt_long函数

前言         在linux中,经常需要各种命令,通常情况下都会带各种参数,而这些参数是如何解析的呢?通常使用GNU C提供的函数getopt、getopt_long、getopt_long_only函数来解析命令行参数。一、关于命令行参数     命令行参数可以分为两类,一类是短选项,一类是长选项,短选项在参数前加一杠"-",长选项在参数前连续加两杠"--",如下表(ls 命令参数)所示,...

爱拼才会赢 7万+

getopt() / getopt_long()命令行参数解析函数

当getopt()返回-1后,optind是argv中第一个Operands(最后一个选项参数后紧跟的第一个参数,可以是NULL)参数的索引值。当匹配一个选项后,如果该选项带选项参数,则optarg指向选项参数的字符串;若该选项的选项参数为可选时,optarg为NULL表明无选项参数,optarg不为NULL时则指向选项参数字符串。opterr的值非0时,在getopt()遇到无法识别的选项,或者某个选项丢失选项参数的时候,getopt()会打印错误信息到标准错误输出。选项,它是用来用来决定程序的行为。

ljl113的博客 3928

getopt.h和getopt(),getopt_long()等函数

下载了一个牛人的代码,里面包括了一个getopt.h的头文件,在vs2008下无法通过编译,没有这个头文件,上网搜索了一些信息,记录下来,以方便以后查阅。      getopt.h和对应的链接库不是每个编译器都有的,gcc编译器好像是有的,但是在vs2008是没有的,所以就要去网上下载跨平台的代码,不管怎么样,最终要把getopt.h和相应的lib文件和工程链接起来,这样才不会报错。这些都比较

涛行无疆的专栏 1万+

getopt和getopt_long函数

平时在写程序时常常需要对命令行参数进行处理,当命令行参数个数较多时,如果按照顺序一个一个定义参数含义很容易造成混乱,而且如果程序只按顺序处理参数的话,一些“可选参数”的功能将很难实现。 在Linux中,我们可以使用getopt、getopt_long、getopt_long_only来对这个问题进行处理。 #include int getopt(int ar

Cashey1991的专栏 5万+

getopt 和 getopt_long 命令行解析函数

getopt 和 getopt_long 命令行解析函数

hinewcc的博客 4004

函数 —— 分析命令行参数 getopt() getopt_long() getopt_long_only()

getopt()函数1、功能:     getopt - parse command options (enhanced)  (解析命令选型(增强))2、表头文件:       #include&lt;unistd.h&gt;3、定义函数:        int getopt(int argc, char * const argv[] ,const char * optstring);4、opts...

杰儿__er 的博客 1469

getopt()、getopt_long函数详细解释!保证看明白

getopt() 方法是用来分析命令行参数的,它的作用是判断你输入的命令行是否正确。

warmingsummer的博客 4095
上一篇: STM32 USB 问题汇总
下一篇: s-video vs. composite video vs. component video 几种视频格式详细说明和比较
#Page#
博客等级 码龄23年 1691粉丝 360原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值