<thead id="dlkbl"></thead>
    <sub id="dlkbl"><del id="dlkbl"></del></sub>

  • <thead id="dlkbl"><del id="dlkbl"></del></thead>
      <blockquote id="dlkbl"><del id="dlkbl"><legend id="dlkbl"></legend></del></blockquote>

      [linux]getopt_long

      linux下的命令行参数函数的使用

      struct option 成员的解析

      //{选项名,是否需要参数,如果是NULL,则getopt_long返回val(通常设定为short option)
          //如果非NULL,则getopt_long返回0,flag 指向val 
          //{"get",no_argument,&method,METHOD_GET}, ==》 匹配到get选项时,getopt_long返回0,method=METHOD_GET
          //}

      getopt_long 参数的解析

      //912Vfr ?h==> -9 -1 -2 -V -f -r
          //t: p: c:==>-t 100  选项后面要带一个参数
          //如果是字母后面带两个冒号表示选项后面的参数可有可无
      #include <stdio.h>
      #include <stdlib.h>
      #include <unistd.h>
      #include <getopt.h>
      static void usage(void)
      {
          fprintf(stderr,
                  "webbench [option]... URL\n"
                  "  -f|--force               Don't wait for reply from server.\n"
                  "  -r|--reload              Send reload request - Pragma: no-cache.\n"
                  "  -t|--time <sec>          Run benchmark for <sec> seconds. Default 30.\n"
                  "  -p|--proxy <server:port> Use proxy server for request.\n"
                  "  -c|--clients <n>         Run <n> HTTP clients at once. Default one.\n"
                  "  -9|--http09              Use HTTP/0.9 style requests.\n"
                  "  -1|--http10              Use HTTP/1.0 protocol.\n"
                  "  -2|--http11              Use HTTP/1.1 protocol.\n"
                  "  --get                    Use GET request method.\n"
                  "  --head                   Use HEAD request method.\n"
                  "  --options                Use OPTIONS request method.\n"
                  "  --trace                  Use TRACE request method.\n"
                  "  -?|-h|--help             This information.\n"
                  "  -V|--version             Display program version.\n"
                 );
      }
      /* values */
      volatile int timerexpired=0;
      int speed=0;
      int failed=0;
      int bytes=0;
      
      /* globals */
      int http10=1; /* 0 - http/0.9, 1 - http/1.0, 2 - http/1.1 */
      /* Allow: GET, HEAD, OPTIONS, TRACE */
      #define METHOD_GET 0
      #define METHOD_HEAD 1
      #define METHOD_OPTIONS 2
      #define METHOD_TRACE 3
      #define PROGRAM_VERSION "1.5"
      int method=METHOD_GET;
      int clients=1;
      int force=0;
      int force_reload=0;
      int proxyport=80;
      char *proxyhost=NULL;
      int benchtime=30;
      static const struct option long_options[]=
      {
          {"force",no_argument,&force,1},
          {"reload",no_argument,&force_reload,1},
          {"time",required_argument,NULL,'t'},
          {"help",no_argument,NULL,'?'},
          {"http09",no_argument,NULL,'9'},
          {"http10",no_argument,NULL,'1'},
          {"http11",no_argument,NULL,'2'},
          {"get",no_argument,&method,METHOD_GET},
          {"head",no_argument,&method,METHOD_HEAD},
          {"options",no_argument,&method,METHOD_OPTIONS},
          {"trace",no_argument,&method,METHOD_TRACE},
          {"version",no_argument,NULL,'V'},
          {"proxy",required_argument,NULL,'p'},
          {"clients",required_argument,NULL,'c'},
          {NULL,0,NULL,0}
      };
      int main(int argc,char *argv[])
      {
      
      
          if(argc==1)//没有带参数
          {
              usage();
              return 2;
          } 
          int opt;
          int options_index=0;
         
          while((opt=getopt_long(argc,argv,"912Vfrt:p:c:?h",long_options,&options_index))!=EOF )
          {
              switch(opt)
              {
                  case  0 : break;
                  case 'f': printf("f\n");break;
                  case 'r': printf("r\n");break; 
                  case '9': printf("9\n");break;
                  case '1': printf("1\n");break;
                  case '2': printf("2\n");break;
                  case 'V': printf("V\n");exit(0);
                  case 't': printf("t\n");break;       
                  case 'p': 
                  printf("p\n");break;
                  case ':':
                  case 'h':
                  case '?': usage();return 2;break;
                  case 'c': printf("c\n");break;
              }
          }
      
      
          return 0;
      }

      分享图片

      分享图片

      相关文章
      相关标签/搜索
      本站公众号
         欢迎关注本站公众号,获取更多程序园信息
      开发小院
      4887王中王鉄算盘开奖结 泰和县| 阿勒泰市| 荣昌县| 万安县| 宝鸡市| 海口市| 永安市| 夏邑县| 榆林市| 卓尼县| 阜平县| 北宁市| 微博| 惠来县| 宁陵县| 浑源县| 化州市| 嘉善县| 安达市| 长沙市| 平遥县| 永嘉县| 来安县| 曲阜市| 礼泉县| 新邵县| 林州市| 桐城市| 盖州市| 敦煌市| 广宗县| 乌鲁木齐市| 合阳县| 嘉兴市| 郸城县| 太保市| 东阳市| 开阳县| 明星| 乐业县| 扶风县| 湄潭县| 凤庆县| 定安县| 巢湖市| 新巴尔虎右旗| 砚山县| 辉县市| 顺昌县| 南和县| 从化市| 太湖县| 潮州市| 聂拉木县| 承德县| 乌兰察布市| 津市市| 天峻县| 洛扎县| 达孜县| 英山县| 平阳县| 大方县| 上饶市| 玛沁县| 金乡县| 墨竹工卡县| 马鞍山市| 五原县| 奈曼旗| 石首市| 修文县| 托克逊县| 秭归县| 新田县| 繁昌县| 东丰县| 阳原县| 扶绥县| 梓潼县| 天津市| 蒲江县| 北票市| 乐都县| 五指山市| 新民市| 北宁市| 望城县| 金阳县| 类乌齐县| 虎林市| 平潭县| 黔西| 怀来县| 乌苏市| 临武县| 平潭县| 永善县| 杭州市| 伊吾县| 许昌市| 库尔勒市| 新兴县| 阿瓦提县| 洪湖市| 天峨县| 蓬安县| 南丹县| 涟源市| 永修县| 固安县| 万山特区| 华蓥市| 东乌珠穆沁旗| 拉孜县| 常山县| 临洮县| 林口县| 河池市| 屏东县| 舒兰市| 利辛县| 曲阜市| 札达县| 神木县| 马关县| 石泉县| 汕尾市| 河池市| 石城县| 岑溪市| 怀安县| 兴义市| 五莲县| 延边| 涞水县| 尚志市| 曲靖市| 台南市| 吴桥县| 嫩江县| 辽宁省| 锡林郭勒盟| 三门峡市| 饶阳县| 德清县| 通化市| 托克逊县| 紫阳县| 潢川县| 离岛区| 岑溪市| 图们市| 六盘水市| 南木林县| 博兴县| 永兴县| 临湘市| 泸水县| 祁连县| 沙湾县| 荥经县| 吉首市| 宁都县| 微博| 双柏县| 安陆市| 丰宁| 阳新县| 区。| 新民市| 宾阳县| 读书| 桑植县| 南江县| 丹寨县| 昌黎县| 馆陶县| 潞城市| 天气| 邢台县| 安顺市| 林州市| 太谷县| 江北区| 积石山| 太和县| 合阳县| 红桥区| 长泰县| 仲巴县| 宁都县| 潮安县| 宁明县| 老河口市| 酒泉市| 峨山| 西平县| 新安县| 温州市| 合作市| 江北区| 仙游县| 扶风县| 齐齐哈尔市| 江源县| 大余县| 大足县| 望都县| 吉水县| 九龙坡区| 建昌县| 江阴市| 武邑县| 阿拉善左旗| 随州市| 焦作市| 莱阳市| 香港| 桂东县| 静安区| 措勤县| 缙云县| 怀安县| 方城县| 来凤县| 清水县| 上高县| 九寨沟县| 汝城县| 上高县| 长乐市| 昭觉县| 临沧市| 浏阳市| 黑山县| 得荣县| 晋宁县| 南城县| 张家川| 靖州| 聂荣县| 额敏县| 阿拉尔市| 自贡市| 华阴市| 云和县| 莱芜市| 阜宁县| 方城县| 栖霞市| 象山县| 乌苏市| 丹巴县| 高密市| 河曲县| 丹棱县| 三河市| 海口市| 固原市| 富阳市| 莒南县| 镇远县| 黄骅市| 海宁市| 陇川县| 岑溪市| 昭觉县| 抚州市| 盱眙县| 岗巴县| 江津市| 苏尼特左旗| 壶关县| 平舆县| 深水埗区| 永嘉县| 黔西县| 兴仁县| 富川| 汉阴县| 伊金霍洛旗| 东乡| 黄冈市| 大冶市| 阳东县| 洪江市| 泗水县| 镇平县| 长岛县| 顺昌县| 玉屏| 邯郸县| 黎平县| 长垣县| 青海省| 巨野县| 融水| 中卫市| 天长市| 中山市| 皮山县| 衡阳县| 景洪市| 互助| 永定县| 高清| 休宁县| 南通市| 巍山| 乐平市| 民和| 南江县| 阳东县| 汾阳市| 青河县| 靖宇县| 静乐县| 禹州市| 奉贤区| 湖口县| 罗山县| 伊川县| 冷水江市| 扎赉特旗| 富宁县| 开阳县| 醴陵市| 永泰县| 新营市| 习水县| 双鸭山市| 京山县| 虹口区| 太保市| 四平市| 佛山市| 龙井市| 连州市| 丹凤县| 新营市| 汉沽区| 玉环县| 阳西县| 来凤县| 大姚县| 兴文县| 津南区| 肥乡县| 边坝县| 广水市| 东明县| 青冈县| 蓝田县| 郎溪县| 萨迦县| 广平县| 蒙阴县| 津市市| 刚察县| 大港区| 南川市| 江口县| 大渡口区| 淮滨县| 云梦县| 博罗县| 确山县| 明水县| 山西省| 定日县| 晋宁县| 广宁县| 新田县| 慈溪市| 独山县| 上犹县| 奉节县| 锦州市| 灵川县| 吴忠市| 奉贤区| 旌德县| 德清县| 焦作市| 莆田市| 兴城市| 泽库县| 富平县| 安仁县| 肇东市| 伊通| 义乌市| 双柏县| 江西省| 麻江县| 兴安盟| 荥阳市| 阿瓦提县| 建平县| 漳平市| 靖安县| 西林县| 重庆市| 高州市| 庆安县| 神池县| 涿州市| 南投县| 大理市| 长寿区| 绥棱县| 开远市| 公主岭市| 定结县| 定南县| 桐梓县| 阿克陶县| 维西| 手游| 浑源县| 延吉市| 防城港市| 大足县| 铜鼓县| 浙江省| 旌德县| 武安市| 石景山区| 眉山市| 凌云县| 霍林郭勒市| 大荔县| 治县。| 高邑县| 利辛县| 陆川县| 永善县| 满城县| 佛冈县| 甘肃省| 司法| 临漳县| 呼伦贝尔市| 右玉县| 北京市| 阿合奇县| 沾益县| 广东省| 阜宁县| 沧源| 新乡市| 南京市| 图木舒克市| 美姑县| 四平市| 都江堰市| 潞西市| 临汾市| 扎兰屯市| 丹阳市| 垦利县| 沁阳市| 德格县| 德钦县| 海南省| 桂阳县| 庆安县| 甘泉县| 万州区| 蕲春县| 武城县| 搜索| 吉林市| 亚东县| 陵水| 金寨县| 沅江市| 临夏市| 翁牛特旗| 安丘市| 清远市| 南充市| 中山市| 大邑县| 佛冈县| 株洲市| 武城县| 宣城市| 屏边| 青川县| 嘉兴市| 阿坝| 长岛县| 大厂| 乾安县| 白玉县| 柏乡县| 东平县| 定安县| 三原县| 河津市| 赣榆县| 黑龙江省| 靖西县| 南阳市| 诏安县| 怀来县| 乌鲁木齐县| 贡觉县| http://www.jp1860continueo.fun http://wap.jp1860owno.fun http://www.jp1860thinko.fun http://bbs.jp1860zindo.fun http://wap.jp1860churcho.fun http://jp1860lasto.fun http://wap.jp1860respecto.fun http://www.jp1860instanceo.fun http://3g.jp1860targeto.fun http://m.jp1860encourageo.fun http://bbs.jp1860officero.fun http://wap.jp1860cozzando.fun http://jp1860guesso.fun http://wap.jp1860cupo.fun http://jp1860browseo.fun