大佬教程收集整理的这篇文章主要介绍了[linux]getopt_long,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
//{选项名,是否需要参数,如果是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 //}
//912Vfr ?h==> -9 -1 -2 -V -f -r //t: p: c:==>-t 100 选项后面要带一个参数 //如果是字母后面带两个冒号表示选项后面的参数可有可无
#include <st@R_301_2442@.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",&force,1},{"reload",&force_reload,{"time",required_argument,NULL,'t'},{"Help",'?'},{"http09",'9'},{"http10",'1'},{"http11",'2'},{"get",{"head",METHOD_HEAD},{"options",METHOD_OPTIONS},{"trace",METHOD_TRACE},{"version",'V'},{"proxy",'p'},{"clients",'c'},{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; }
以上是大佬教程为你收集整理的[linux]getopt_long全部内容,希望文章能够帮你解决[linux]getopt_long所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。