美文网首页
getopt函数的使用

getopt函数的使用

作者: exploring_T | 来源:发表于2017-12-06 15:40 被阅读0次

    0X00 函数的作用

    用来解析既有选项又有参数的命令行,很多著名的程序都会采用这种结构和switch case语句来组织其主函数,例如tcpdump。

    0X01函数的原型

    int getopt(int argc,char* const argv[],const char* optstring)

    与之相关的几个全局变量

    extern char* optarg

    extern int optind,opterr,optopt

    其中argc argv 为命令行参数,optstring指明能够解析的选项(abc:de表示能够解析abcde这几个选项,c选项后有参数)

    返回值为函数识别的当前选项,-1表示无更多选项,?表示未标识的选项,:表示未给出参数

    optarg会被系统自动赋为当前选项的参数

    optopt会被自动赋值当前未标识的选项

    optind为处理参数的位置

    opterr在非0时,向屏幕输出错误。

    这几个全局变量非常重要,老师说是因为怕参数太多吓到使用者才选择使用了全局变量

    0X02getopt_long

    函数原型

    int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int*longindex);

    有一些函数的选项为--list等等,这就需要getopt_long 来处理

    其原理与getopt类似,只不过加了一个长选项与短选项的一个对应表,是一个结构体数组,其中结构体成员有name:长选项名称,has_arg:又参维0无参为1,flag=null时value存储相应的短选项longindex我感觉一般情况都设为了null。

    相关文章

      网友评论

          本文标题:getopt函数的使用

          本文链接:https://www.haomeiwen.com/subject/hdxlixtx.html