色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > Linux C下的命令行參數解析

Linux C下的命令行參數解析 時間:2018-09-27      來源:未知

C庫中提供了相應的函數接口供用戶解析命令行選項,我們常使用的有getopt_long_only和getopt_long,在使用的方法上相差不大。

命令行選項中一般可以選擇傳遞長選項和短選項

長選項的用法為: ./a.out --username bryant --help

短選項的用法為: ./a.out -n bryant -h -v

1. 函數接口

函數使用的頭文件為 #include

2. 參數介紹

? argc、argv : 從main函數傳遞而來。

? shortopts : 短選項字符串。如“n:v”,短選項字符串不需要"-",而且短選項需要傳遞參數時,在短選項后面加上":"。

一般使用的時候,定義一個空的shortopts即可。

? longopts : struct option 數組,用于存放長選項參數。

struct option {

const char *name; //長選項名

int has_arg; //是否需要參數

int *flag;

int val;

};

has_arg的值有三種情況。

#define no_argument 0

#define required_argument 1

#define optional_argument 2

? longind : 用于返回長選項在longopts結構體數組中的索引值,用于調試。一般置為NULL。

flag和val兩個值相互依賴,主要分兩種情況。

(1) flag為NULL時,val值用于確定該長選項,所以需要長選項指定唯一的val值。這里也為長選項和短選項建立了橋梁。

(2) flag不為NULL時,將val值存放到flag所指向的存儲空間,用于標識該長選項出現過。

3. 返回值

? 程序中使用短選項,則返回短選項字符,例如傳遞-n,如果需要參數,則將參數保存在optarg中。!optarg不需要定義,在getopt.h中已經有定義

? 程序中使用長選項,則根據flag和val的值確定。當flag為NULL時,返回val值(val值必須唯一)。當value值等于短 選項的值時,可以使用短選項解析長選項;當flag不為NULL時,則將val值存入flag所指向的存儲空間,此時getopt_long返回零。

? 出現未定義的長選項或短選項,則返回?

? 解析完畢,getopt_long返回 -1;

{"help", no_argument, 0, 0},

{"h", no_argument, 0, 0},

{0, 0, 0, 0}

};

while ((c = getopt_long_only(argc, argv, optstring, opts, &index)) != -1) {

printf("index = %d, c = %d\n", index, c);

switch (index) {

case 0:

case 1:

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

break;

case 2:

case 3:

printf("version:1.0.0\n");

break;

case 4:

case 5:

printf("debug:yes\n");

break;

case 6:

case 7:

printf("help:?\n");

break;

default:

printf("other:%d\n", index);

break;

}

}

return 0;

}

如果使用如上的方式是將得到選項(長選項或短選項)在結構體數組中的位置,并將該值存放在index中。在while中判定選項的下標即可,如果需要獲得參數中傳遞的值,則將該值保存到optarg中。

上圖的程序編譯之后,解析命令行選項如下圖:

傳遞短選項:

傳遞長選項:

長選項短選項混合:

使用這種方式可以得到短選項的字符值,用戶通過該值進行判斷。



        

傳遞短選項:

傳遞長選項:

上一篇:Android中Java與web通信

下一篇:Android內核和Linux內核的差別

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 在线免费观看国产视频 | 色片在线免费观看 | 5252色国产精品 | 亚洲中文字幕久久无码精品 | 天堂久久久久VA久久久久 | 巨茎爆乳无码性色福利 | 国产日韩欧美一区二区久久精品 | 黄页网站视频免费大全 | 久久天天躁拫拫躁夜夜AV | 国产精品高潮呻吟久久av无 | 窝窝人体色www | 在线a毛片免费视频观看 | 老中医吮她的花蒂和奶水视频播放 | 边摸边吃奶边做爽免费视频99 | 成人涩涩| 大地资源网中文第五页 | 拔插拔插8X8X海外华人免费视频 | 成人性生交A片免费看V | 中国女人黄色一片 | 欧美资源在线观看 | 啦啦啦高清在线观看视频www | 秋霞久草 | 国产亚洲欧美一区 | 欧美视频黄 | 137肉体摄影日本裸交 | 国产精品人妻久久久久 | 日本熟日本熟妇中文在线观看 | 干美少妇 | 少妇高潮喷潮久久久影院 | 亚洲综合色婷婷七月丁香 | AV永久免费网站入口 | 人妻体内射精一区二区 | 在线免费观看日本欧美 | 日本又色又爽又黄的a片中文字幕 | 国产精品扒开腿做爽爽爽A片小 | 久久不卡精品 | 在线亚洲97SE亚洲综合在线 | 性史性农村DVD毛片 在线观看中文视频 | 精品国产乱码久久久久夜深人妻 | 亚洲国产成人精品无码区 | 两个人免费视频www 国产午夜无码视频免费网站 |