int getopt_long(int argc,
char * const argv[],
const char *optstring,
const struct option *longopts,
int *longindex);
funcion:对长或短命令行参数进行解析 选项需要用短用'-'标记 长用'--'来标记
argc: 传给main函数的参数个数
argv[]:传给main函数的参数
optstring:一个包含合法字符选项的字符串,若只解析长选项此处设置""串但不能设置NULL
如: "ab:c::"
(1) -a(--aaa) 选项不带参数
(2) -b(--bbb)选项带参数 -b(-bbb) arg
(3) -c(--ccc)选项可以带参数 也可以不带参数, 但选项和参数必须紧挨着 -c(-ccc)[arg]
longindex:若不为空,则存放longopts数组中匹配的元素下标,此值只有在optstings为""串,的时候才会返回值
struct option{
const char *name; //长选项的名字
int has_arg; //是否有参数
//no_argument表示没有,
//required_argument需要参数--bbb arg 或者 --bbb=arg
//optional_argument需要或不需要 使用方式为--ccc=arg
int *flag;//如果flag是null(通常情况),则函数会返回与该项option匹配的val值;
//如果flag不是NULL,则将val值赋予flag所指向的内存,并且返回值设置为0。
int val; //和长选项对应的短选项
};
例子如下: