用Getopt在Linux下獲取命令列引數方法

2021-06-06 15:30:54 字數 1472 閱讀 5026

1、函式說明

表頭檔案:#include

函式宣告:int getopt(int argc, char * const argv, const char *optstring);

函式說明:getopt()用來分析命令列引數。引數argc和argv是由main()傳遞的引數個數和內容。引數optstring 則代表欲處理的選項字串。此函式會返回在argv 中下乙個的選項字母,此字母會對應引數optstring 中的字母。如果選項字串裡的字母後接著冒號「:」,則表示還有相關的引數,全域變數optarg 即會指向此額外引數。如果getopt()找不到符合的引數則會印出錯資訊,並將全域變數optopt設為「?」字元,如果不希望getopt()印出錯資訊,則只要將全域變opterr設為0即可。

選項的使用定義規則類似:

ab:c::

意思是:

a 後沒有冒號,表示沒有可以引數

b 後跟乙個冒號,表示有乙個必要的引數

c 後跟兩個冒號,表示有乙個可選的引數

長選項的定義相同,但用逗號分割。

返回值:如果找到符合的引數則返回此引數字母,如果引數不包含在引數optstring 的選項字母則返回「?」字元,分析結束則返回-1.

2、例子程式

下面是乙個使用getopt函式讀取引數的例子程式,該程式支援 –p –s –b –c的引數,並將這些引數值讀取後進行列印。你可以根據需要將這些**稍作修改用於自己的程式中。

/** getopt.c

* author: coonxu

* email: [email protected]

* 這是乙個使用getopt函式讀取引數的例子程式,該程式支援 -p -s -b -c的引數,

* 並將這些引數值讀取後進行列印。你可以根據需要將這些**稍作修改用於自己的程式中。

#include

#include

int main(int argc, char **argv)

int ch;

opterr = 0;

while( ( ch = getopt( argc, argv, "s:b:c:p:" ) ) != eof )

switch(ch)

case 's':

printf("s opt: %s\n", optarg);

break;

case 'b':

printf("b opt: %s\n", optarg);

break;

case 'c':

printf("c opt: %s\n", optarg);

break;

case 'p':

printf("p opt: %s\n", optarg);

break;

case '?':

printf( "illegal option: %c\n", ch );

break;

return 0;

}

使用getopt在Linux下獲取命令列引數

使用getopt在 linux 下獲取命令列引數 getopt 在unix 下的命令列程式特別好用,特別是在你有許多引數要加入時。一般來說,你可以透過 man 3 getopt 來獲得其說明。這個函式很好用,也很簡單,但網上關於這個函式的中文介紹實在是少之又少,這篇文章就簡單講述一下如何利用 get...

Linux下的getopt 函式

linux下的getopt 函式被設計用來處理命令列引數,使用時只要新增 include 即可。函式原型如下 int getopt int argc,char const argv,const char optstring 當給定了命令引數的數量 指向這些引數的陣列和選項字串後,getopt 將返回...

用Sendmail在Linux下架設郵件伺服器

sendmail作為一種免費的郵件伺服器軟體,已被廣泛的應用於各種伺服器中,它在穩定性 可移植性 及確保沒有bug等方面具有一定的特色,且可以在網路中搜尋到大量的使用資料。一.安裝sendmail 完全安裝red hat linux 9.0時,sendmail就會自動內建,版本號為8.12.8 4。...