linux環境有關編程(2)

來源:互聯網
上載者:User

C語言通過putenv和getenv函數來訪問環境變數。

#include<stdlib.h>

char *getenv(const char *name);

int putenv(const char *string);

環境是由一組格式為“名字=值”的字串組成。

getenv函數以給定的名字搜尋環境中的一個字串,並返回與該名字相關的值。如果請求不存在,就返回NULL。

由於getenv返回的字串儲存在靜態空間,所以想進一步利用它,就必須拷貝出來。

//  1  The first few lines after the declaration of main ensure that the program, environ.c, has been called correctly.#include <stdlib.h>#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){    char *var, *value;    if(argc == 1 || argc > 3) {        fprintf(stderr,"usage: environ var [value]\n");        exit(1);    }//  2  That done, we fetch the value of the variable from the environment, using getenv.    var = argv[1];    value = getenv(var);    if(value)        printf("Variable %s has value %s\n", var, value);    else        printf("Variable %s has no value\n", var);//  3  Next, we check whether the program was called with a second argument. If it was, we set the variable to the value of that argument by constructing a string of the form name=value and then calling putenv.    if(argc == 3) {        char *string;        value = argv[2];        string = malloc(strlen(var)+strlen(value)+2);        if(!string) {            fprintf(stderr,"out of memory\n");            exit(1);        }        strcpy(string,var);        strcat(string,"=");        strcat(string,value);        printf("Calling putenv with: %s\n",string);        if(putenv(string) != 0) {            fprintf(stderr,"putenv failed\n");            free(string);            exit(1);        }//  4  Finally, we discover the new value of the variable by calling getenv once again.        value = getenv(var);        if(value)            printf("New value of %s is %s\n", var, value);        else            printf("New value of %s is null??\n", var);    }    exit(0);}

./environ HOME

Variable HOME has value /home/zq

./environ qq

Varliable qq has no value

./environ zq qq

Varliable zq has no value

Calling putenv with: zq=qq

New value of zq is qq

./environ zq

Varliable zq has no value 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.