當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > Linux應(yīng)用程序幾種參數(shù)傳遞方式
參數(shù)傳遞一般是函數(shù)傳參或程序執(zhí)行傳參,本文主要介紹程序執(zhí)行傳遞參數(shù)。程序傳參一般有如下幾種方法。
1、程序執(zhí)行時(shí)傳參
這種傳參使用較多,尤其是一些比較簡(jiǎn)單的參數(shù)傳遞,如在linux下執(zhí)行“ls -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ì)講解了