• linux命令行解析函数介绍


    函数原型:
            int getopt(int argc,char * const argv[ ],const char * optstring);
            给定了命令参数的数量 (argc)、指向这些参数的数组 (argv) 和选项字符串 (optstring) 后,getopt() 将返回第一个选项,并设置一些全局变量。使用相同的参数再次调用该函数时,它将返回下一个选项,并设置相应的全局变量。如果不再有识别到的选项,将返回 -1,此任务就完成了。
    头文件:
            #include<unistd.h>
    全域变量:
            extern char *optarg——指向当前选项参数(如果有)的指针。
            extern int optind——再次调用 getopt() 时的下一个 argv 指针的索引。
            extern opterr, optoptt——最后一个未知选项。
    参数介绍:
            argc和argv:这两个参数就是main函数中的两个参数,可直接使用。
            optstring: optstring是选项字母组成的字串。optstring中的指定的内容的意义(例如getopt(argc, argv, "ab:c:de::");)
            1.单个字符,表示选项,(如上例中的abcde各为一个选项)。
            2.单个字符后接一个冒号:表示该选项后必须跟一个参数。参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。(如上例中的b:c:)。
            3 单个字符后跟两个冒号,表示该选项后可以跟一个参数,也可以不跟。如果跟一个参数,参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。(如上例中的e::,如果没有跟参数,则optarg = NULL)。

            如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息,并将全域变量optarg设为“?”字符,如果不希望getopt()打印出错信息,则只要将全域变量opterr设为0即可。

    示例代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    
    int main(int argc, char *argv[]) {
    <span id="transmark"></span>if(argc == 1) {
                  printf(“error 1”);
                  return 0;
            }
    
            int opt;
            const char *optstring = “ab:c::d”;
    
            while((opt = getopt(argc, argv, optstring)) != -1) {
                  switch(opt) {
                         case ‘a’: printf(“%c
    ”, opt); break;
                         case ‘b’: printf(“%c, %s
    ”, opt, optstring); break;
                         case ‘c’: printf(“%c, %s
    ”, opt, optstring); break;
                         case ‘d’: printf(“%c, %s
    ”, opt); break;
                  }
            }
            return 0;
    }
    

    执行以下命令进行测试:

    a 
    d 
    b, 200
    c, 300
    


  • 相关阅读:
    winform右键菜单
    IIS添加映射配置
    linux+nginx+python+django环境配置
    ASP.NET获取客户端IP地址
    Ext未定义问题解决
    c#获取硬件信息
    DevExpress GridControl使用方法总结
    CDN技术原理
    Mac搭建nginx+rtmp服务器
    MAXOS安装FFMPEG
  • 原文地址:https://www.cnblogs.com/xuwq/p/5014734.html
Copyright © 2020-2023  润新知