Linux應用(yong)程序幾種(zhong)參(can)數傳遞方式
時間:2018-07-30 來源:未知
參(can)(can)數(shu)傳遞一般是函數(shu)傳參(can)(can)或程(cheng)序(xu)執行(xing)傳參(can)(can),本文(wen)主要介紹程(cheng)序(xu)執行(xing)傳遞參(can)(can)數(shu)。程(cheng)序(xu)傳參(can)(can)一般有如下幾種方(fang)法。
1、程序執行時傳參
這(zhe)種傳參(can)(can)(can)使用較(jiao)多,尤其是一(yi)些(xie)(xie)比較(jiao)簡單的(de)參(can)(can)(can)數傳遞(di),如在linux下執行“ls -l、ls -a”時除了命令本身之外(wai)還(huan)有一(yi)些(xie)(xie)參(can)(can)(can)數,這(zhe)些(xie)(xie)參(can)(can)(can)數不同(tong)導(dao)致程序執行結果不同(tong),這(zhe)種傳參(can)(can)(can)方(fang)法最為簡單也(ye)最常用。實(shi)現方(fang)法如下
例:
#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;
}
運行結果
./test hello world

這(zhe)種方(fang)法(fa)是通過main函(han)數(shu)(shu)的(de)兩(liang)個參(can)(can)(can)數(shu)(shu)argc和argv實現(xian),argc為參(can)(can)(can)數(shu)(shu)的(de)個數(shu)(shu)、argv是參(can)(can)(can)數(shu)(shu)列表,通過解(jie)析(xi)argv就可以獲取參(can)(can)(can)數(shu)(shu)內容。單人如果想要(yao)實現(xian)如ls -l或ls –version之(zhi)類的(de)參(can)(can)(can)數(shu)(shu)傳(chuan)遞則一(yi)般需要(yao)特殊的(de)參(can)(can)(can)數(shu)(shu)解(jie)析(xi)函(han)數(shu)(shu)getopt、getopt_long或getopt_long_only解(jie)析(xi),這(zhe)里就不一(yi)一(yi)介紹了。
2、通過環境變(bian)量傳參
通過環(huan)境(jing)變量(liang)傳參也是使(shi)用較(jiao)多的一種,如(ru)環(huan)境(jing)變量(liang)較(jiao)復雜或較(jiao)多且可能(neng)應(ying)為環(huan)境(jing)不同而(er)不同時一般使(shi)用這種參數傳遞方式(shi)。實現方法如(ru)下(xia)
首先要設置環(huan)境變量如:export TEST_ENV=helloworld
程(cheng)序中獲(huo)取環境(jing)變量的方法有兩種
1、 通過(guo)main函數的第三個參(can)數將系(xi)統所以(yi)環(huan)境變量傳遞到程序中(zhong),然后找到想(xiang)要的
#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;
}
運行結果

2、 通過getenv函數(shu)獲取特定的(de)環境變量
例:
#include
#include
#include
int main(int argc, char **argv, char **envp)
{
int i = 0;
printf("TEST_ENV = %s\n", getenv("TEST_ENV"));
return 0;
}
運行結(jie)果如下(xia):

3、通過(guo)配置文件傳(chuan)參
上述兩(liang)種(zhong)方(fang)法(fa)傳(chuan)遞參數相對簡單,如下更加復雜的參數,如很多(duo)需(xu)要一些(xie)配置文(wen)(wen)件,程序中可通過(guo)解析文(wen)(wen)件的方(fang)法(fa)實現參數傳(chuan)遞,這只需(xu)要讀(du)取文(wen)(wen)件內容安裝格式解析接口即可,主(zhu)要是文(wen)(wen)件操作(zuo)及字符(fu)串操作(zuo)這里就不詳細講解了

