【说明】getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下:
1、形如:cmd [-a][-b] //对短选项的解析;
2、形如:cmd [-a a_argument][-b b_argument] //对短选项及短选项的参数解析;
3、形如:cmd [-a[a_argument]] //选项a的参数也是可选的情况解析
#include <unistd.h>
extern char *optarg;
extern int optind, opterr, optopt;
int getopt(int argc, char * const argv[], const char *optstring);
可以解析 main 函数的参数
字符串optstring可以下列元素,
1.单个字符,表示选项: optstring="ab"
./main -a -b
2.单个字符后接一个冒号:表示该选项后必须跟一个参数。 optstring="adf:"
参数紧跟在选项后或者以空格隔开。该参数的指针赋给optarg。
./main -f config -d
./main -fconfig -d
3. 单个字符后跟两个冒号,表示该选项后必须跟一个参数。optstring="c::df:"
参数必须紧跟在选项后不能以空格隔开。该参数的指针赋给optarg。
./main -fconfig -d
extern char *optarg;
char config_file[24];
int main(int argc,char **argv)
{
while ((ch = getopt(argc, argv, "df:D:")) != -1)
{
// printf("optind:%d\n", optind);
switch (ch)
{
case 'd':
run_daemon = 1;
break;
case 'f':
memset(config_file,0,sizeof(config_file));
strcpy(config_file,optarg);
break;
default:
printf("other option :%c\n", ch);
}
}
}