linux c開發 處理命令列引數

2021-08-07 01:54:08 字數 1255 閱讀 6616

在linux c語言開發時,可使用getopt_long獲取命令列引數,這個方法同時支援短選項和長選項,比較方便。(因為選項可以帶引數,為了不和命令列引數混淆,這裡命令列引數稱為選項)

邊看**,邊做分析:

#include 

#include //需要包括此標頭檔案

// values for long options

// 長選項對應的整數值,在long_options結構體陣列中,對長選項名對應的整數值進行定義

enum ;

// 定義短選項,如果有必選引數就要在選項名後加冒號,無引數或可選引數則不要

// 短選項的用法是乙個-後面跟選項名,如果有引數空格加引數,例如 ./myserver -c cfg.json

// 如果是可選引數則要使用兩個-,並用等號賦值,例如:./myserver --v=5

static

const

char *short_options = "c:vh";

// 長選項的用法是兩個-後面選項名,如果有引數需要看是必須引數還是可選引數。

// 定義長選項陣列,每一項是乙個結構體,第乙個成員是長選項名,第二個成員是引數使用情況,包括:

// required_argument:必須引數,在命令列中需要跟在選項名後面用空格分開,例如 ./myserver --port 8000 或者用等號連線 ./myserver --port=8000

// no_argument: 沒有引數,那麼在選項之後就不能寫引數,如果用等號加引數就會報錯 option '--help' doesn't allow an argument,如果空格加引數,那引數會被認為是乙個選項。

// optional_argument: 可選引數,只能使用等號新增。例如 ./myserver --verbose=5

// 結構體第四個成員是選項對應的整數值。值得注意的是,這裡長選項的整數值可以填入短選項的字元,這樣長短選項可以關聯起來,達到相同的效果。如果長選項沒有對應可用的短選項,則這兒要定義乙個數值,這個數值最好大於256,避免和短選項值衝突。下面會看到getopt_long返回值就是這個數值,通過這個數值進行不同的操作。

static

const

struct option long_options = ,,,

,,

};int main(int argc, char *argv)

else

break;}}

return

0;}

Linux C 命令列引數解析

為了提高程式的靈活性,我們常常需要在啟動程式時指定引數。比如,我們man ls看一下ls的官方介紹文件 長引數與後面的值可以加空格,也可以用 號連線。如 byte 3 和 byte 3是相同的。如果我們想實現這個引數解析功能,需要用到這個標頭檔案。主要提供了 乙個結構體 struct option ...

命令列引數處理

url url include include include include include struct student optsting是選項引數組成的字串,字元後跟乙個冒號,表明該選項要求有引數。static const char optstring i n h?option結構稱為長選項表...

python命令列引數處理

本篇將介紹python中sys,getopt模組處理命令列引數 如果想對python指令碼傳引數,python中對應的argc,argv c語言的命令列引數 是什麼呢?需要模組 sys 引數個數 len sys.argv 指令碼名 sys.argv 0 引數1 sys.argv 1 引數2 sys....