檔案
#include
函式原型
int getopt_long(int argc, char * const argv,const char *optstring,const struct option*longopts, int *longindex);
函式說明
getopt被用來解析命令列選項引數。
getopt_long支援長選項的命令列解析,使用man getopt_long,得到其宣告如下:
int getopt_long(int argc, char * const argv,const char *optstring, const struct option *longopts,int *flag);
函式中的argc和argv通常直接從main()的兩個引數傳遞而來。optsting是選項引數組成的字串:
字串optstring可以下列元素:
1.單個字元,表示選項,
2.單個字元後接乙個冒號:表示該選項後必須跟乙個引數。引數緊跟在選項後或者以空格隔開。該引數的指標賦給optarg。
3單個字元後跟兩個冒號,表示該選項後可以有引數也可以沒有引數。如果有引數,引數必須緊跟在選項後不能以空格隔開。該引數的指標賦給optarg。(這個特性是gnu的擴張)。
optstring是乙個字串,表示可以接受的引數。例如,"a:b:c:d:",表示可以接受的引數是a,b,c,d,其中,a和b引數後面跟有更多的引數值。(例如:-a host -b name)
引數longopts,其實是乙個結構的例項:
struct option
引數flag,表示當前長引數在longopts中的索引值。
給個例子:
struct option long_options = ,,}
現在,如果命令列的引數是-a 123,那麼呼叫getopt_long()將返回字元'a',並且將字串123由optarg返回(注意注意!字串123由optarg帶回!optarg不需要定義,在getopt.h中已經有定義),那麼,如果命令列引數是-c,那麼呼叫getopt_long()將返回字元'c',而此時,optarg是null。最後,當getopt_long()將命令列所有引數全部解析完成後,返回-1。
注意
required_argument(或者是1)時,引數輸入格式為:--引數 值 或者 --引數=值。
optional_argument(或者是2)時,引數輸入格式只能為:--引數=值。
getopt long 函式的作用
linux系統下,需要大量的命令列選項,如果自己手動解析他們的話實在是有違軟體復用的思想,不過還好,gnu c library留給我們乙個解析命令列的介面 x open規範 好好使用它可以使你的程式改觀不少。使用getopt long 需要引入標頭檔案 include 現在我們使用乙個例子來說明它的...
getopt函式和getopt long函式
預備知識 1.getopt getopt在unix下的命令列程式特別好用,特別是在你有許多引數要加入時。表頭檔案 i nclude 函式宣告 int getopt int argc,char const argv,const char optstring 函式說明 getopt 用來分析命令列引數。...
getopt和getopt long函式使用詳解
getopt和getopt long函式使用詳解 在我們操作命令行的時候,main函式中輸入引數乙個乙個分析不免麻煩,我們可以使用linux的引數分析函式解決此問題方便省力。include int getopt int argc,char const argv,const char optstrin...