首页
学习
活动
专区
圈层
工具
发布

getopt()、getopt_long()与getopt_long_only()获取命令行参数

1.背景 众所周知,C/C++程序的主函数有两个参数。第一个参数是整型,可以获得包括程序名字的参数个数,第二个参数是字符数组指针或字符指针的指针,可以按顺序获得命令行上各个字符串参数。...当执行getopt()函数时,会依次扫描每一个命令行参数(从下标1开始),第一个-b,是一个选项,而且这个选项在选项字符串optstring中有,我们看到b后面有冒号,也就是b后面必须带有参数,而”test...: 4 HAVE option: -c The argument of -c is 1234 对于这个过程会调用三次getopt()函数,和第一个输入一样,是找到选项-b和他的参数”test”,这时optind...的值为3,也就意味着,下一次的getopt()要从argv[3]开始搜索,所以第二次调用getopt()函数,找到选项-c和他的参数1234(选项和参数是连在一起的),由于-c1234写在一起,所以他两占一起占用...(3)longindex:如果longindex不是NULL,它指向getopt_long()获得的长选项在longopts的下标。

4.7K71
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    命令行參数选项处理:getopt()及getopt_long()函数使用

    在执行某个程序的时候,我们通常使用命令行參数来进行配置其行为。 命令行选项和參数控制 UNIX 程序,告知它们怎样动作。...比如: $gcc getopt_test.c -o testopt getopt_test .c是非选项參数。-o是选项,testopt是-o选项的关联值。 依据Linux的惯例。...程序的选项应该以一个短横线开头。后面包括单个字母或数字。选项分为:带关联值的和不带关联值的以及可选的。不带关联值的选项能够在一个短横线后合并使用,比如 ls -al。 此外还有长选项。...const char *optstring ); getopt使用main函数的argc和argv作为前两个參数,optsting是一个字符列表。...getopt() 所设置的全局变量(在unistd.h中)包含: optarg——指向当前选项參数(假设有)的指针。

    1.4K30

    深入理解getopt

    getopt – 解析命令的可选项 【说明】 getopt 只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下: 1、形如:cmd [-a][-b] //对短选项的解析; 2、...,argc、argv 是调用 main 函数时传入的参数。...传入的’-‘开始的字符被解析为选项,getopt 一次执行解析出一个 option,如果循环执行,可以将 argv 中的全部 option 解析出来; 2、在 getopt 的执行中,每次进入都会更新...,在getopt 执行过程中会将单独的 argument 交换到 argv 数组的后面,option 选项提前,如:cmd -a file1 -b file2,如果 a/b 均为不带参数的选项,这最终...,如果在 optstring 的第一个字符(或者在第一个字符是 +/- 之后)是 ‘:’,那么将返回 ‘:’; 8、如果在选项中有 “–”,并且前后是空格,其含义是强制终止 getopt 的继续执行,

    1.9K10

    python getopt方法_python的getopt

    Getopt是一个专门设计来减轻命令行处理负担的库函数,主要用来分析命令行参数,不仅python语言中有getopt,C语言中也有getopt。下面主要来介绍python中getopt的使用方法。...表示字符串 返回结果:是一个list,每个list的项为(选项,值)的元组对 具体实例:#ping -c 12 -6 -s 1024 –help –size 1024 处理结果: getopt.getopt...size”,”1024”)] c:表示是一个短选项,前面用’-‘表示,紧随着c之后的元素与c组成一个元组; 6:表示是一个短选项,前面用’-‘表示,与6组成元组的元素是空字符; help:表示是一个长选项...: # print help information and exit: 1.处理所使用的函数叫getopt(),因为是直接使用import导入的getopt模块,所以要加上限定getopt才可以。...5.调用getopt函数。函数返回两个列表:opts和args。opts为分析出的格式信息。args为不属于格式信息的剩余的命令行参数。opts是一个两元组的列表。每个元素为:(选项串,附加参数)。

    91120

    Python getopt模块函数用法小

    官方模块说明:https://docs.python.org/2/library/getopt.html#module-getopt     shell中几乎所有的命令输入的时候都可以携带合适的参数来扩展其功能...前段时间看到同事写了个添加IP的shell脚本,里面使用了高大上的getopt函数,于是就简单琢磨了下,好记性不如烂笔头,索性就做个笔记总结记录一下,也是好久都不写文字性的东西了,开头都不知道该从何写起了...Python中getopt模块 说明:该模块是用来在终端执行程序时处理命令行参数时使用的。...函数用法格式:getopt.getopt(args, options[, long_options]) args:命令行参数,一般是sys.argv[1:],0为脚本本身的名字; options:shortopts...sys.argv[1:]为获取到的命令行参数,赋值给options,options变量在getopt分析完后实际包含两个值,参数和参数值,args值为不属于getopt函数分析内的参数和参数值,例如python

    94120

    如何获取PHP命令行参数

    getopt() 从命令行参数列表中获取选项 其实就是这样一个简单的函数,我们就可以像 Linux 的命令选项一样获取指定的命令值。...首先要说明的是,ccc 和 ddd 不是标准的选项参数,也就是说,这个函数接收的内容是以 - 开头的选项,所以 ccc 和 ddd 不会在这里输出,并且需要注意的是,非选项参数会中断选项参数的获取,在...// php 如何获取PHP命令行参数.php -f=22 aa -b=33 // 选项的解析会终止于找到的第一个非选项,之后的任何东西都会被丢弃。...这时,如果我们想知道选项参数在什么地方或者因为哪个参数而中断的话,就可以使用 getopt() 函数的第三个参数了。...总结 说实话,在没看文档前真的只知道有一个 $argv 变量可以用来获取命令行脚本的参数,通过这次学习才发现原来还有一个这么强大的选项参数函数。

    3.3K10

    第二十四章 : 编译程序

    虽然有许多流行的编程语言,两个占主导地位。大多数为现代系统编写的程序,要么用 C 编写,要么是用 C++ 编写。在随后的例子中,我们将编写一个 C 程序。...在 diction.c 文件的开头附近,我们看到这行代码: #include "getopt.h" This instructs the compiler to read the file getopt.h...Later in the makefile, we see one instancewhere it gets used: 其定义了所用的 C 编译器是 gcc。...这个 make 程序将会运行,使用 Makefile 文件的内容来指导它的行为。它会产生很多信息。...我们也知道了在程序维护过程中,make 程序起到了举足轻重的作用。make 程序可以用到任何需要维护一个目标/依赖关系的任务中,不仅仅为了编译源代码。

    40410

    PHP-CGI远程代码执行漏洞(CVE-2012-1823)分析

    下载PHP源码,可以看到其中有个目录叫sapi。...sapi在PHP中的作用,类似于一个消息的“传递者”,比如我在《Fastcgi协议分析 && PHP-FPM未授权访问漏洞 && Exp编写》一文中介绍的fpm,他的作用就是接受Web容器通过fastcgi...但fpm是php在5.3版本以后引入的,是一个更高效的fastcgi管理器,其诸多优点我就不多说了,可以自己去翻翻源码。.../usr/local/bin/php-cgi -d include_path=/path的写法来进行测试,认为不应该限制php-cgi接受命令行参数,而且这个功能不和其他代码有任何冲突。...通过阅读源码,我发现cgi模式下有如下一些参数可用: -c 指定php.ini文件的位置 -n 不要加载php.ini文件 -d 指定配置项 -b 启动fastcgi进程 -s 显示文件源码 -T 执行指定次该文件

    3.3K30

    Subversion API 使用简介

    另一方面高级语言使开发者完全摆脱了内存管理,[53]Java和Python之类的语言使用垃圾收集原理,在需要的时候分配对象内存,在不使用时进行清理。...使用 C 和 C++ 以外的语言 除C语言以外,如果你对使用其他语言结合Subversion库感兴趣—如Python脚本或是Java应用—Subversion通过简单包裹生成器(SWIG)提供了最初的支持...这里使用其它语言的方法来与Subversion交互没有任何意义:Subversion开发社区没有提供其他的绑定,你可以在Subversion项目链接页里(http://subversion.tigris.org...你必须要小心,SVNKit没有采用Subversion的核心库,其行为方式没有确保与Subversion匹配。...在C语言中,为表示路径和条目的hash需要处理自定义的数据类型(例如APR提供的库),但是Python有hash(叫做“dictionaries”),并且是内置数据类型,而且还提供了一系列操作这些类型的函数

    1.2K20

    Python黑帽子-实现netcat基本功能(改进版)

    前言 一个好的渗透测试人员,应该拥有强大的编程能力,而python就是一个很好的工具,我最近也在研究如何用python开发属于自己的小工具,《python黑帽子》是一本很不错的书籍。...我们可以调用这个函数来创建一个线程threading.Thread(group=None, target=None, name=None, args=(), kwargs={}) 虽然这个函数给了这么多的参数...,但是其实我们一般只用的到三个吧,最多四个,target是我们创建一个线程必须要用到的关键字参数,它是我们这个线程需要执行的函数,也就是线程需要做的事,而args参数则是target函数需要的普通参数,...开始写代码 netcat的主要功能其实就是将网络上的数据显示到屏幕上,这也是它名字的来源,"net""cat",所以我们需要做的就是创建一个tcp客户端和服务端,然后他们之间发送数据,并把这些发送的数据根据我们的需要显示在屏幕上...\r\n" return output if __name__ == "__main__": main() 我觉得main函数没什么好说的 我们先来看一下client函数: def client

    1.6K20

    CC++ 命令解析:getopt 方法详解和使用示例

    大家好,又见面了,我是你们的朋友全栈君。 一、简介 getopt() 方法是用来分析命令行参数的,该方法由 Unix 标准库提供,包含在 头文件中。...int optind, opterr, optopt; getopt 参数说明: argc:通常由 main 函数直接传入,表示参数的数量 argv:通常也由 main 函数直接传入,表示参数的字符串变量数组...非零时表示存在无效选项或者缺少选项参数,并输出其错误信息 optopt:当发现无效选项字符时,即 getopt() 方法返回 ?...字符,optopt 中包含的就是发现的无效选项字符 三、实例分析 让我们通过一系列的实例来掌握 getopt 方法的使用吧。 1..../OptDemo -d 由于选项 d 不是我们在 optstring 中预定义的选项,于是报错 2. 可选参数 一个冒号表示选项后必须有参数,没有参数就会报错。

    2.5K51

    你还不知道argc,argv是什么?

    这里有个函数给大家介绍下 #include int getopt(int argc, char * const argv[], const char *optstring...); extern char *optarg; extern int optind, opterr, optopt; 函数说明:getopt()用来分析命令行参数。...在linux下大家都用过这样一条指令: gcc -o main main.cpp 这条指令中的-o就是命令行的选项,后面的main是-o选项所携带的参数 有些选项是不用带参数的,而这样不带参数的选项可以写在一起...解析参数 了解完选项和选项参数之后就是通过getopt这个函数解析参数了 在此之前了解一下几个全局参数 extern char *optarg;` 用来保存选项的参数 extern int optind.../main: option requires an argument -- 'b' Unknown option: b 不携带参数的话就会无法识别参数 c和e没有":",所以 c 选项就类似于 -v

    1.6K20
    领券