C & LINUX

C / LINUX putenv(3)

Ocean_ 2022. 5. 2. 18:46

함수 기능

기존 환경 변수의 값을 변경하거나 새로운 환경변수를 등록

 

환경변수란?

환경변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임

함수 원형

#include <stdlib.h>

int putenv(const char *str);

함수 파라메터

str

이름 = 값 의 형식으로 처리

함수 예제

putenv1

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>

void ssu_addone(void);

extern char **environ;
char glob_var[]="HOBBY=swimming";



int main(void){
    int i;
    for(i = 0; environ[i]!=NULL; i++){
        printf("environ[%d] :%s\n",i,environ[i]);
    }

    putenv(glob_var);
    ssu_addone();
    printf("My hobby is %s\n",getenv("HOBBY"));
    printf("My lover is %s\n",getenv("LOVER"));

    strcpy(glob_var + 6 , "fising");
    for(i=0; environ[i] !=NULL; i++)
        printf("environ[%d] :%s\n",i,environ[i]);
    exit(0);
}

void ssu_addone(void){
    char auto_var[10];
    strcpy(auto_var, "LOVER=js");
    putenv(auto_var);
}

putenv2

#include<stdio.h>
#include<stdlib.h>

void ssu_printenv(char *label, char ***envpp);

extern char **environ;
int main(int argc, char *argv[],char *envp[]){
    ssu_printenv("Initially",&envp);
    putenv("TZ=PST8PDT");
    ssu_printenv("After changing TZ",&envp);
    putenv("WARNING=Don't use envp after putenv()");
    ssu_printenv("After setting a new variable",&envp);
    printf("value of WARNING is %s\n",getenv("WARNING"));
    exit(0);
}

void ssu_printenv(char * label, char***envpp){
    char **ptr;
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>

void ssu_addone(void);

extern char **environ;
char glob_var[]="HOBBY=swimming";



int main(void){
    int i;
    for(i = 0; environ[i]!=NULL; i++){
        printf("environ[%d] :%s\n",i,environ[i]);
    }

    putenv(glob_var);
    ssu_addone();
    printf("My hobby is %s\n",getenv("HOBBY"));
    printf("My lover is %s\n",getenv("LOVER"));

    strcpy(glob_var + 6 , "fising");
    for(i=0; environ[i] !=NULL; i++)
        printf("environ[%d] :%s\n",i,environ[i]);
    exit(0);
}

void ssu_addone(void){
    char auto_var[10];
    strcpy(auto_var, "LOVER=js");
    putenv(auto_var);
}
    printf("---- %s ---\n",label);
    printf("envp is at %8o abd continas %8o\n",envpp,*envpp);
    printf("environ is at %8o and contains %8o\n",&environ,environ);
    printf("My environment variable are:\n");
    for(ptr=environ; *ptr; ptr++)
        printf("(%8o) = %8o -> %s\n",ptr, *ptr, *ptr);
    printf("(%8o) = %8o\n",ptr,*ptr);

}

함수 결과

putenv1

putenv2

 

리눅스시스템 프로그래밍 - 홍지만 저

교재 내에 있는 예제를 바탕으로 작성한 글 입니다.