getopt
--man
#include <unistd.h>
int getopt(int argc, char * const argv[],
const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;
#include <getopt.h>
int getopt_long(int argc, char * const argv[],
const char *optstring,
const struct option *longopts, int *longindex);
--ex
23 struct option longopts[] = {
24 {"icmp", no_argument, NULL, 'i'},
25 {"help", no_argument, NULL, 'h'},
26 {"drop", required_argument, NULL, 'd'},
27 {0,0,0,0}
28 };
51 while((c = getopt_long(argc, argv, "hid:", longopts, NULL))!=-1){
52 switch(c){
53 case 'i':{
54 own->icmp_off = 1;
55 break;
56 }
57 case 'd':{
58 own->drop_ip = inet_addr(optarg);
59 break;
60 }
61 case 'h':{
62 print_help(argv[0]);
63 return -1;
64 }
65 default:
66 break;
67 }
--
作用:
解析输入的参数。
参数:
argc和argv是传入main的参数个数 和 参数列表。
"hid:"是-h -i -d 这样的选项;d后有冒号,表示-d选项有参数跟着。
longopts是struct option *,列出-h -i -d对应的长选项格式--help --icmp --drop
相关外部变量:
extern char *optarg; - 当前选项的参数字串