Linux中getopt詳解


Linux中getopt詳解

getopt函數用來解析命令行參數的,以‘-’或‘--’開頭的參數為選項參數,選項參數除去‘-’或‘--’的剩下的是選項字符如果getopt函數被重復調用,則它將會依次返回每個選項元素中的選項字符。

使用getopt需使用以下頭文件:

  #include<unistd.h>

  #include<getopt.h>

 

有幾個全局變量與getopt函數解析參數有關:

 

optind: int型, 指示下一個要解析的參數位置,初始時為1.

 

optarg: char *, 必須接參數的選項元素的參數, 如上面的-nxzz, optarg 就指向"xzz"字符串.

 

opterr: int 型, 設為0將不打印錯誤信息.

 

函數原型為:  

  int getopt(int argc, char * const argv[], const char *optstring);

參數說明:

  前兩個參數與main函數參數相同,argc保存參數的個數,argv[]保存參數數組,第三個參數optstring是我們自己定義的選項字符組成的字符串,如“abc”,表示該命令有三個選項參數-a, -b, -c,選項字符后面如果有一個冒號說明該選項元素一定有一個參數,且該參數保存在optarg中,如“n:t”表示選項元素n后面要接參數,選項元素t后不接參數,如-n xxz -t或-nxzz t,有兩個冒號說明該選項可接可選參數,但可選參數不保存在optarg中

返回值:

  如果當前處理的參數是選項參數,且該選項字符在optstring字符串中,即為你定義的選項,則返回該選項字符,如果該選項字符不是你定義的,那么返回字符‘?’,並更新全局變量optind,指向argc數組中的下一個參數。如果當前處理的參數不是選項參數,則optind偏移向下一個參數,直到找到第一個選項元素為止,然后再按之前描述的操作,如果找不到選項元素, 說明解析結束, 則返回-1.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM