<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學習啦 > 學習電腦 > 操作系統 > Linux教程 > linux獲解析命令行參數

        linux獲解析命令行參數

        時間: 佳洲1085 分享

        linux獲解析命令行參數

          在linux下有時候會遇到長選項的命令行參數要怎么解析它呢?下面由學習啦小編為大家整理了linux解析命令行參數的相關知識,希望對大家有所幫助。

          linux下解析命令行參數

          getopt_long支持長選項的命令行解析,使用man getopt_long,得到其聲明如下:

          #include

          int getopt_long(int argc, char * const argv[],

          const char *optstring,

          const struct option *longopts, int *longindex);

          int getopt_long_only(int argc, char * const argv[],

          const char *optstring,

          const struct option *longopts, int *longindex);

          說明:函數中的argc和argv通常直接從main()到兩個參數傳遞而來。optsting是選項參數組成的字符串,如

          果該字符串里任一字母后有冒號,那么這個選項就要求有參數。下一個參數是指向數組的指針,這個數組是

          option結構數組,option結構稱為長選項表,其聲明如下:

          struct option {

          const char *name;

          int has_arg;

          int *flag;

          int val;

          };

          結構中的元素解釋如下:

          const char *name:選項名,前面沒有短橫線。譬如"help"、"verbose"之類。

          int has_arg:描述長選項是否有選項參數,如果有,是哪種類型的參數,其值見下表:

          符號常量 數值 含義

          no_argument 0 選項沒有參數

          required_argument 1 選項需要參數

          optional_argument 2 選項參數是可選的

          int *flag:

          如果該指針為NULL,那么getopt_long返回val字段的值;

          如果該指針不為NULL,那么會使得它所指向的結構填入val字段的值,同時getopt_long返回0

          int val:

          如果flag是NULL,那么val通常是個字符常量,如果短選項和長選項一致,那么該字符就應該與optstring中

          出現的這個選項的參數相同;

          最后一個參數:longindex參數一般賦為NULL即可;如果沒有設置為NULL,那么它就指向一個變量,這個變量

          會被賦值為尋找到的長選項在longopts中的索引值,這可以用于錯誤診斷。

          注:GNU提供的getopt-long()和getopt-long-only()函數,其中,后者的長選項字串是以一個短橫線開始的

          ,而非一對短橫線。

          Linux 命令行約定:

          幾乎所有的GNU/linux程序都遵循一些命令行參數定義的約定。程序希望出現的參數可以分成兩種:選

          項(options or flags)、其他類型的的參數。Options修飾了程序運行的方式,其他類型的參數則提供了輸

          入(例如,輸入文件的名稱)。

          對于options類型參數可以有兩種方式:

          1)短選項(short options):顧名思義,就是短小參數。它們通常包含一個連字號和一個字母(大寫

          或小寫字母)。例如:-s,-h等。

          2)長選項(long options):長選項,包含了兩個連字號和一些大小寫字母組成的單詞。例如,--

          size,--help等。

          *注:一個程序通常會提供包括short options和long options兩種參數形式的參數。

          對于其他類型參數的說明:

          這種類型的參數,通常跟隨在options類型參數之后。例如,ls –s /功能為顯示root目錄的大小。’/

          ’這個參數告訴ls要顯示目錄的路徑。

          補充:linux解析命令行參數——getopt_long()函數使用規則

          (1)使用前準備兩種數據結構

          字符指針型變量

          該數據結構包括了所有要定義的短選項,每一個選項都只用單個字母表示。如果該選項需要參數(如,

          需要文件路徑等),則其后跟一個冒號。例如,三個短選項分別為‘-h’‘-o’‘-v’,其中-o需要參數,

          其他兩個不需要參數。那么,我們可以將數據結構定義成如下形式:

          const char * const shor_options = “ho:v” ;

          struct option 類型數組

          該數據結構中的每個元素對應了一個長選項,并且每個元素是由四個域組成。通常情況下,可以按以下

          規則使用。第一個元素,描述長選項的名稱;第二個選項,代表該選項是否需要跟著參數,需要參數則為1,

          反之為0;第三個選項,可以賦為NULL;第四個選項,是該長選項對應的短選項名稱。另外,數據結構的最后

          一個元素,要求所有域的內容均為0,即{NULL,0,NULL,0}。下面舉例說明,還是按照短選項為‘-h’‘-o’

          ‘-v’的例子,該數據結構可以定義成如下形式:

          const struct option long_options = {

          { “help”, 0, NULL, ‘h’ },

          { “output”, 1, NULL, ‘o’ },

          { “verbose”, 0, NULL, ‘v’ },

          { NULL, 0, NULL, 0 }

          };

          (2)調用方法

          參照(1)準備的兩個數據結構,則調用方式可為:

          getopt_long( argc, argv, short_options, long_options, NULL);

          (3)幾種常見返回值

          (a)每次調用該函數,它都會分析一個選項,并且返回它的短選項,如果分析完畢,即已經沒有選項了,

          則會返回-1。

          (b)如果getopt_long()在分析選項時,遇到一個沒有定義過的選項,則返回值為‘?’,此時,程序員可

          以打印出所定義命令行的使用信息給用戶。

          (c)當處理一個帶參數的選項時,全局變量optarg會指向它的參數

          (d)當函數分析完所有參數時,全局變量optind(into argv)會指向第一個‘非選項’的位置

        3598845 主站蜘蛛池模板: 亚洲AV无码破坏版在线观看| 日韩精品成人网页视频在线| 成人国产一区二区三区精品| 欧美大胆老熟妇乱子伦视频| 无码成人AV在线一区二区| 性色在线视频精品| 国产成人乱色伦区| 日韩精品无码一区二区三区| 中文字幕日韩有码av| 欧美 亚洲 国产 日韩 综AⅤ| 国产av黄色一区二区三区| 综合亚洲网| 成人看的污污超级黄网站免费| 动漫精品中文字幕无码| 色天使色偷偷色噜噜| 国产睡熟迷奷系列网站| 亚洲日本精品国产第一区| 久久人人97超碰精品| 国产线播放免费人成视频播放| 亚洲国产精品无码中文字| AV极品无码专区亚洲AV| 亚洲人成日本在线观看| 国产偷窥熟女高潮精品视频| 亚洲av无码av在线播放| 在线国产极品尤物你懂的| 国产精品中文字幕久久| 亚洲乱熟乱熟女一区二区| 年轻女教师hd中字3| 一区二区免费高清观看国产丝瓜| 国内精品久久黄色三级乱| 国内精品久久人妻无码不卡 | 18禁动漫一区二区三区| 亚洲第一无码AV无码专区| 超碰人人超碰人人| 亚洲真人无码永久在线| 国产在线观看免费观看不卡| 无码日韩精品91超碰| 91精品91久久久久久| 欧美www在线观看| 毛片一级在线| 50岁熟妇的呻吟声对白|