91精品人妻系列动画无码 - 国产精品夜间视频香蕉 - 91丝袜人妻一区二区三区 - 久久伊伊香蕉精品网站

信盈達(dá)—您身邊的嵌入式&人工智能專家
全國(guó)免費(fèi)咨詢熱線:400-8788-909

嵌入式培訓(xùn):Linux應(yīng)用程序幾種參數(shù)傳遞方式

時(shí)間:2018-08-26 00:00:00 來(lái)源:信盈達(dá) 作者:信盈達(dá)

參數(shù)傳遞一般是函數(shù)傳參或程序執(zhí)行傳參,本文主要介紹程序執(zhí)行傳遞參數(shù)。程序傳參一般有如下幾種方法。

 

1、程序執(zhí)行時(shí)傳參

 

這種傳參使用較多,尤其是一些比較簡(jiǎn)單的參數(shù)傳遞,如在linux下執(zhí)行“l(fā)s -l、ls -a”時(shí)除了命令本身之外還有一些參數(shù),這些參數(shù)不同導(dǎo)致程序執(zhí)行結(jié)果不同,這種傳參方法最為簡(jiǎn)單也最常用。實(shí)現(xiàn)方法如下

 

例:

 

#include

 

int main(int argc, char **argv)

 

{

 

int i = 0;

 

for(i = 0; i < argc; i++)

 

printf("argv[%d] = %s\n", i, argv[i]);

 

return 0;

 

}

 

運(yùn)行結(jié)果

 

./test hello world

 

 

 

這種方法是通過(guò)main函數(shù)的兩個(gè)參數(shù)argc和argv實(shí)現(xiàn),argc為參數(shù)的個(gè)數(shù)、argv是參數(shù)列表,通過(guò)解析argv就可以獲取參數(shù)內(nèi)容。單人如果想要實(shí)現(xiàn)如ls -l或ls –version之類的參數(shù)傳遞則一般需要特殊的參數(shù)解析函數(shù)getopt、getopt_long或getopt_long_only解析,這里就不一一介紹了。

 

2、通過(guò)環(huán)境變量傳參

 

通過(guò)環(huán)境變量傳參也是使用較多的一種,如環(huán)境變量較復(fù)雜或較多且可能應(yīng)為環(huán)境不同而不同時(shí)一般使用這種參數(shù)傳遞方式。實(shí)現(xiàn)方法如下

 

首先要設(shè)置環(huán)境變量如:export TEST_ENV=helloworld

 

程序中獲取環(huán)境變量的方法有兩種

 

1、 通過(guò)main函數(shù)的第三個(gè)參數(shù)將系統(tǒng)所以環(huán)境變量傳遞到程序中,然后找到想要的

 

#include

 

#include

 

int main(int argc, char **argv, char **envp)

 

{

 

int i = 0;

 

while(*envp != NULL) {

 

if (!strncmp(*envp, "TEST_ENV", strlen("TEST_ENV")))

 

printf("envp[%d] = %s\n", i++, *envp);

 

i++;

 

envp++;

 

}

 

return 0;

 

}

 

運(yùn)行結(jié)果

 

 

 

2、 通過(guò)getenv函數(shù)獲取特定的環(huán)境變量

 

例:

 

#include

 

#include

 

#include

 

int main(int argc, char **argv, char **envp)

 

{

 

int i = 0;

 

printf("TEST_ENV = %s\n", getenv("TEST_ENV"));

 

return 0;

 

}

 

運(yùn)行結(jié)果如下:

 

 

 

3、通過(guò)配置文件傳參

 

上述兩種方法傳遞參數(shù)相對(duì)簡(jiǎn)單,如下更加復(fù)雜的參數(shù),如很多需要一些配置文件,程序中可通過(guò)解析文件的方法實(shí)現(xiàn)參數(shù)傳遞,這只需要讀取文件內(nèi)容安裝格式解析接口即可,主要是文件操作及字符串操作這里就不詳細(xì)講解了